hamlib 0.2.7 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -6
- package/binding.gyp +8 -2
- package/docs/build-hamlib-from-source.md +640 -0
- package/docs/prebuilt-bundling.md +347 -0
- package/index.d.ts +126 -6
- package/lib/index.js +162 -1
- package/package.json +5 -2
- package/prebuilds/darwin-arm64/libhamlib.4.dylib +0 -0
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/libhamlib.4.dylib +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/libhamlib.so +0 -0
- package/prebuilds/linux-arm64/libhamlib.so.4 +0 -0
- package/prebuilds/linux-arm64/libhamlib.so.4.0.7 +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/libhamlib.so +0 -0
- package/prebuilds/linux-x64/libhamlib.so.4 +0 -0
- package/prebuilds/linux-x64/libhamlib.so.4.0.7 +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/prebuilds/win32-x64/hamlib_shim.dll +0 -0
- package/prebuilds/win32-x64/node.napi.node +0 -0
- package/src/hamlib.cpp +291 -10
- package/src/hamlib.h +14 -0
- package/src/shim/hamlib_shim.c +135 -0
- package/src/shim/hamlib_shim.h +54 -0
|
@@ -0,0 +1,640 @@
|
|
|
1
|
+
# 从源码构建 Hamlib
|
|
2
|
+
|
|
3
|
+
本指南介绍如何在各个平台上从源码构建最新版本的 Hamlib 库,并使用它来构建 node-hamlib。
|
|
4
|
+
|
|
5
|
+
## 目录
|
|
6
|
+
|
|
7
|
+
- [为什么从源码构建](#为什么从源码构建)
|
|
8
|
+
- [快速开始](#快速开始)
|
|
9
|
+
- [前置依赖](#前置依赖)
|
|
10
|
+
- [使用自动化构建脚本](#使用自动化构建脚本)
|
|
11
|
+
- [手动构建步骤](#手动构建步骤)
|
|
12
|
+
- [验证安装](#验证安装)
|
|
13
|
+
- [常见问题](#常见问题)
|
|
14
|
+
- [平台特定说明](#平台特定说明)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 为什么从源码构建
|
|
19
|
+
|
|
20
|
+
从 Hamlib 源码构建有以下优势:
|
|
21
|
+
|
|
22
|
+
### ✅ 优势
|
|
23
|
+
|
|
24
|
+
1. **获取最新功能** - 使用最新的 Hamlib 开发版本,包含最新的设备支持和 bug 修复
|
|
25
|
+
2. **版本控制** - 精确控制使用的 Hamlib 版本,而不依赖系统包管理器
|
|
26
|
+
3. **优化构建** - 可以根据需要定制构建选项,减少不必要的依赖
|
|
27
|
+
4. **跨平台一致性** - 在所有平台使用相同的构建流程,避免系统包版本差异
|
|
28
|
+
5. **开发和调试** - 方便修改和调试 Hamlib 源码
|
|
29
|
+
|
|
30
|
+
### ⚠️ 注意事项
|
|
31
|
+
|
|
32
|
+
1. **构建时间** - 从源码编译需要 5-10 分钟(取决于 CPU)
|
|
33
|
+
2. **磁盘空间** - 需要约 200-300MB 的临时空间用于编译
|
|
34
|
+
3. **依赖工具** - 需要安装编译工具链(autotools, gcc/clang)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 快速开始
|
|
39
|
+
|
|
40
|
+
最简单的方法是使用我们提供的自动化构建脚本:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 使用默认设置构建(推荐)
|
|
44
|
+
node scripts/build-hamlib.js
|
|
45
|
+
|
|
46
|
+
# 最小化构建(减少依赖和构建时间)
|
|
47
|
+
node scripts/build-hamlib.js --minimal
|
|
48
|
+
|
|
49
|
+
# 安装到自定义目录(无需 sudo)
|
|
50
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib --minimal
|
|
51
|
+
|
|
52
|
+
# 查看帮助
|
|
53
|
+
node scripts/build-hamlib.js --help
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 前置依赖
|
|
59
|
+
|
|
60
|
+
### Linux (Ubuntu/Debian)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# 基础编译工具
|
|
64
|
+
sudo apt-get update
|
|
65
|
+
sudo apt-get install -y autoconf automake libtool pkg-config make gcc g++
|
|
66
|
+
|
|
67
|
+
# 可选:USB 设备支持
|
|
68
|
+
sudo apt-get install -y libusb-1.0-0-dev
|
|
69
|
+
|
|
70
|
+
# 可选:其他功能
|
|
71
|
+
sudo apt-get install -y libxml2-dev libreadline-dev
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Linux (CentOS/RHEL/Fedora)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# 基础编译工具
|
|
78
|
+
sudo yum install -y autoconf automake libtool pkgconfig make gcc gcc-c++
|
|
79
|
+
|
|
80
|
+
# 可选:USB 设备支持
|
|
81
|
+
sudo yum install -y libusb1-devel
|
|
82
|
+
|
|
83
|
+
# 可选:其他功能
|
|
84
|
+
sudo yum install -y libxml2-devel readline-devel
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### macOS
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# 安装 Homebrew(如果尚未安装)
|
|
91
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
92
|
+
|
|
93
|
+
# 安装编译工具
|
|
94
|
+
brew install autoconf automake libtool
|
|
95
|
+
|
|
96
|
+
# 可选:USB 设备支持
|
|
97
|
+
brew install libusb
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Windows
|
|
101
|
+
|
|
102
|
+
**推荐:使用官方预编译包**
|
|
103
|
+
|
|
104
|
+
Windows 平台从源码构建 Hamlib 比较复杂,需要完整的 MSYS2/MinGW 环境。对于大多数用户,我们推荐使用官方预编译包:
|
|
105
|
+
|
|
106
|
+
下载地址:https://github.com/Hamlib/Hamlib/releases
|
|
107
|
+
|
|
108
|
+
如果确实需要从源码构建,请参考 [Hamlib 官方文档](https://github.com/Hamlib/Hamlib/blob/master/README.windows.md)。
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 使用自动化构建脚本
|
|
113
|
+
|
|
114
|
+
我们提供了 `scripts/build-hamlib.js` 来自动化整个构建流程。
|
|
115
|
+
|
|
116
|
+
### 基本用法
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# 1. 安装到项目本地目录(CI 默认行为)
|
|
120
|
+
node scripts/build-hamlib.js --prefix=$PWD/hamlib-build --minimal
|
|
121
|
+
|
|
122
|
+
# 2. 设置环境变量
|
|
123
|
+
export HAMLIB_PREFIX=$PWD/hamlib-build
|
|
124
|
+
export LD_LIBRARY_PATH=$PWD/hamlib-build/lib:$LD_LIBRARY_PATH # Linux
|
|
125
|
+
# 或
|
|
126
|
+
export DYLD_LIBRARY_PATH=$PWD/hamlib-build/lib:$DYLD_LIBRARY_PATH # macOS
|
|
127
|
+
|
|
128
|
+
# 3. 构建 node-hamlib
|
|
129
|
+
npm run rebuild
|
|
130
|
+
|
|
131
|
+
# 4. 运行测试
|
|
132
|
+
npm test
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 安装到系统目录
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# 安装到 /usr/local(需要 sudo)
|
|
139
|
+
node scripts/build-hamlib.js --prefix=/usr/local
|
|
140
|
+
|
|
141
|
+
# 安装到用户目录(不需要 sudo)
|
|
142
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib
|
|
143
|
+
|
|
144
|
+
# 构建 node-hamlib 时指定路径
|
|
145
|
+
export HAMLIB_PREFIX=$HOME/local/hamlib
|
|
146
|
+
npm run rebuild
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 脚本选项
|
|
150
|
+
|
|
151
|
+
| 选项 | 说明 |
|
|
152
|
+
|------|------|
|
|
153
|
+
| `--prefix=<path>` | 指定安装路径。CI 环境默认为 `./hamlib-build`,手动构建默认为 `/usr/local` |
|
|
154
|
+
| `--minimal` | 最小化构建,禁用不必要的功能(如 XML、readline、语言绑定等),减少依赖和构建时间 |
|
|
155
|
+
| `--help` | 显示帮助信息 |
|
|
156
|
+
|
|
157
|
+
### 构建流程说明
|
|
158
|
+
|
|
159
|
+
自动化脚本会执行以下步骤:
|
|
160
|
+
|
|
161
|
+
1. **检查构建工具** - 验证 git, autoconf, automake, libtool, make 是否安装
|
|
162
|
+
2. **克隆源码** - 从 GitHub 克隆最新的 Hamlib 源码
|
|
163
|
+
3. **生成配置** - 运行 `./bootstrap` 生成 configure 脚本
|
|
164
|
+
4. **配置构建** - 运行 `./configure` 设置安装路径和构建选项
|
|
165
|
+
5. **编译** - 并行编译(使用所有 CPU 核心)
|
|
166
|
+
6. **安装** - 安装到指定目录
|
|
167
|
+
7. **验证** - 检查安装的头文件和库文件
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 手动构建步骤
|
|
172
|
+
|
|
173
|
+
如果你更喜欢手动控制构建流程,可以按照以下步骤操作。
|
|
174
|
+
|
|
175
|
+
### 步骤 1: 克隆 Hamlib 源码
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
git clone --depth 1 https://github.com/Hamlib/Hamlib.git
|
|
179
|
+
cd Hamlib
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**注意**:使用 `--depth 1` 可以只克隆最新提交,减少下载时间和磁盘占用。
|
|
183
|
+
|
|
184
|
+
### 步骤 2: 生成构建配置
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
./bootstrap
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
这一步会使用 autotools 生成 `configure` 脚本。
|
|
191
|
+
|
|
192
|
+
### 步骤 3: 配置构建选项
|
|
193
|
+
|
|
194
|
+
#### 基本配置(推荐)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
./configure \
|
|
198
|
+
--prefix=/usr/local \
|
|
199
|
+
--enable-shared=yes \
|
|
200
|
+
--enable-static=no
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
#### 最小化配置(减少依赖)
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
./configure \
|
|
207
|
+
--prefix=/usr/local \
|
|
208
|
+
--enable-shared=yes \
|
|
209
|
+
--enable-static=no \
|
|
210
|
+
--disable-winradio \
|
|
211
|
+
--without-cxx-binding \
|
|
212
|
+
--without-perl-binding \
|
|
213
|
+
--without-python-binding \
|
|
214
|
+
--without-tcl-binding \
|
|
215
|
+
--without-lua-binding \
|
|
216
|
+
--without-readline \
|
|
217
|
+
--without-xml-support
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
#### 安装到用户目录(无需 sudo)
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
./configure \
|
|
224
|
+
--prefix=$HOME/local/hamlib \
|
|
225
|
+
--enable-shared=yes \
|
|
226
|
+
--enable-static=no \
|
|
227
|
+
--without-cxx-binding \
|
|
228
|
+
--without-perl-binding \
|
|
229
|
+
--without-python-binding \
|
|
230
|
+
--without-readline \
|
|
231
|
+
--without-xml-support
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### 步骤 4: 编译
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# 并行编译(使用所有 CPU 核心)
|
|
238
|
+
make -j$(nproc) # Linux
|
|
239
|
+
make -j$(sysctl -n hw.ncpu) # macOS
|
|
240
|
+
|
|
241
|
+
# 可选:运行测试
|
|
242
|
+
make check
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 步骤 5: 安装
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# 安装到系统目录(需要 sudo)
|
|
249
|
+
sudo make install
|
|
250
|
+
|
|
251
|
+
# 或安装到用户目录(不需要 sudo)
|
|
252
|
+
make install
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 步骤 6: 更新库缓存(仅 Linux)
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# 如果安装到 /usr/local
|
|
259
|
+
sudo ldconfig
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 验证安装
|
|
265
|
+
|
|
266
|
+
### 检查安装的文件
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
# 检查头文件
|
|
270
|
+
ls -la /usr/local/include/hamlib/
|
|
271
|
+
|
|
272
|
+
# 检查库文件(Linux)
|
|
273
|
+
ls -la /usr/local/lib/libhamlib*
|
|
274
|
+
|
|
275
|
+
# 检查库文件(macOS)
|
|
276
|
+
ls -la /usr/local/lib/libhamlib*.dylib
|
|
277
|
+
|
|
278
|
+
# 检查工具
|
|
279
|
+
which rigctl rigctld
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### 测试 Hamlib 工具
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# 查看版本
|
|
286
|
+
rigctl --version
|
|
287
|
+
|
|
288
|
+
# 列出支持的设备
|
|
289
|
+
rigctl -l
|
|
290
|
+
|
|
291
|
+
# 测试虚拟设备
|
|
292
|
+
rigctl -m 1 -r /dev/ttyUSB0
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 使用 pkg-config 验证
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# 查看安装信息
|
|
299
|
+
pkg-config --modversion hamlib
|
|
300
|
+
pkg-config --cflags hamlib
|
|
301
|
+
pkg-config --libs hamlib
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## 常见问题
|
|
307
|
+
|
|
308
|
+
### Q1: 提示缺少 autoconf/automake/libtool
|
|
309
|
+
|
|
310
|
+
**问题**:运行 `./bootstrap` 时报错找不到工具。
|
|
311
|
+
|
|
312
|
+
**解决方案**:
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
# Linux (Ubuntu/Debian)
|
|
316
|
+
sudo apt-get install autoconf automake libtool
|
|
317
|
+
|
|
318
|
+
# Linux (CentOS/RHEL)
|
|
319
|
+
sudo yum install autoconf automake libtool
|
|
320
|
+
|
|
321
|
+
# macOS
|
|
322
|
+
brew install autoconf automake libtool
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Q2: configure 时提示缺少依赖
|
|
326
|
+
|
|
327
|
+
**问题**:`./configure` 报错缺少某些库。
|
|
328
|
+
|
|
329
|
+
**解决方案**:
|
|
330
|
+
|
|
331
|
+
方案 1(推荐):使用 `--minimal` 禁用不必要的功能:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
node scripts/build-hamlib.js --minimal
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
方案 2:安装缺少的依赖库。
|
|
338
|
+
|
|
339
|
+
### Q3: 编译时内存不足
|
|
340
|
+
|
|
341
|
+
**问题**:系统内存小于 1GB 时,并行编译可能导致内存不足。
|
|
342
|
+
|
|
343
|
+
**解决方案**:
|
|
344
|
+
|
|
345
|
+
减少并行编译的线程数:
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
make -j2 # 只使用 2 个线程
|
|
349
|
+
make # 串行编译(不使用并行)
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Q4: node-hamlib 找不到 Hamlib 库
|
|
353
|
+
|
|
354
|
+
**问题**:构建 node-hamlib 时报错找不到 hamlib 头文件或库。
|
|
355
|
+
|
|
356
|
+
**解决方案**:
|
|
357
|
+
|
|
358
|
+
设置 `HAMLIB_PREFIX` 环境变量:
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
export HAMLIB_PREFIX=/path/to/hamlib/install
|
|
362
|
+
export PKG_CONFIG_PATH=$HAMLIB_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH
|
|
363
|
+
|
|
364
|
+
# Linux
|
|
365
|
+
export LD_LIBRARY_PATH=$HAMLIB_PREFIX/lib:$LD_LIBRARY_PATH
|
|
366
|
+
|
|
367
|
+
# macOS
|
|
368
|
+
export DYLD_LIBRARY_PATH=$HAMLIB_PREFIX/lib:$DYLD_LIBRARY_PATH
|
|
369
|
+
|
|
370
|
+
npm run rebuild
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Q5: 运行时找不到动态库
|
|
374
|
+
|
|
375
|
+
**问题**:运行程序时报错找不到 `libhamlib.so` 或 `libhamlib.dylib`。
|
|
376
|
+
|
|
377
|
+
**解决方案**:
|
|
378
|
+
|
|
379
|
+
**Linux**:
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
# 方案 1:设置 LD_LIBRARY_PATH
|
|
383
|
+
export LD_LIBRARY_PATH=/path/to/hamlib/lib:$LD_LIBRARY_PATH
|
|
384
|
+
|
|
385
|
+
# 方案 2:添加到系统库路径
|
|
386
|
+
echo "/path/to/hamlib/lib" | sudo tee /etc/ld.so.conf.d/hamlib.conf
|
|
387
|
+
sudo ldconfig
|
|
388
|
+
|
|
389
|
+
# 方案 3:使用 RPATH(编译时设置)
|
|
390
|
+
# 已在 binding.gyp 中配置
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**macOS**:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
# 方案 1:设置 DYLD_LIBRARY_PATH
|
|
397
|
+
export DYLD_LIBRARY_PATH=/path/to/hamlib/lib:$DYLD_LIBRARY_PATH
|
|
398
|
+
|
|
399
|
+
# 方案 2:使用 install_name_tool(推荐)
|
|
400
|
+
# 已由 bundle-macos.sh 自动处理
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Q6: Windows 构建失败
|
|
404
|
+
|
|
405
|
+
**问题**:在 Windows 上构建遇到各种错误。
|
|
406
|
+
|
|
407
|
+
**解决方案**:
|
|
408
|
+
|
|
409
|
+
Windows 从源码构建比较复杂。推荐方案:
|
|
410
|
+
|
|
411
|
+
1. 使用官方预编译包(推荐)
|
|
412
|
+
2. 使用 WSL(Windows Subsystem for Linux)按照 Linux 步骤构建
|
|
413
|
+
3. 安装完整的 MSYS2 环境
|
|
414
|
+
|
|
415
|
+
### Q7: CI 构建时间过长
|
|
416
|
+
|
|
417
|
+
**问题**:GitHub Actions 或其他 CI 环境中构建时间超过 10 分钟。
|
|
418
|
+
|
|
419
|
+
**解决方案**:
|
|
420
|
+
|
|
421
|
+
1. 使用 `--minimal` 选项减少构建时间
|
|
422
|
+
2. 缓存构建结果
|
|
423
|
+
3. 考虑使用预编译包代替源码构建
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## 平台特定说明
|
|
428
|
+
|
|
429
|
+
### Linux
|
|
430
|
+
|
|
431
|
+
#### Ubuntu/Debian
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
# 完整步骤
|
|
435
|
+
sudo apt-get update
|
|
436
|
+
sudo apt-get install -y autoconf automake libtool pkg-config make gcc g++
|
|
437
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib --minimal
|
|
438
|
+
export HAMLIB_PREFIX=$HOME/local/hamlib
|
|
439
|
+
export LD_LIBRARY_PATH=$HAMLIB_PREFIX/lib:$LD_LIBRARY_PATH
|
|
440
|
+
npm run rebuild
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
#### CentOS/RHEL
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
# 完整步骤
|
|
447
|
+
sudo yum install -y autoconf automake libtool pkgconfig make gcc gcc-c++
|
|
448
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib --minimal
|
|
449
|
+
export HAMLIB_PREFIX=$HOME/local/hamlib
|
|
450
|
+
export LD_LIBRARY_PATH=$HAMLIB_PREFIX/lib:$LD_LIBRARY_PATH
|
|
451
|
+
npm run rebuild
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
#### 架构支持
|
|
455
|
+
|
|
456
|
+
- **x86_64** - 完全支持
|
|
457
|
+
- **aarch64 (ARM64)** - 完全支持
|
|
458
|
+
- **armv7l (ARM32)** - 支持,但需要确保有足够内存编译
|
|
459
|
+
|
|
460
|
+
### macOS
|
|
461
|
+
|
|
462
|
+
#### Intel Mac
|
|
463
|
+
|
|
464
|
+
Homebrew 安装在 `/usr/local`:
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
brew install autoconf automake libtool
|
|
468
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib --minimal
|
|
469
|
+
export HAMLIB_PREFIX=$HOME/local/hamlib
|
|
470
|
+
npm run rebuild
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
#### Apple Silicon (M1/M2/M3)
|
|
474
|
+
|
|
475
|
+
Homebrew 安装在 `/opt/homebrew`:
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
brew install autoconf automake libtool
|
|
479
|
+
node scripts/build-hamlib.js --prefix=$HOME/local/hamlib --minimal
|
|
480
|
+
export HAMLIB_PREFIX=$HOME/local/hamlib
|
|
481
|
+
npm run rebuild
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### 注意事项
|
|
485
|
+
|
|
486
|
+
1. **Xcode Command Line Tools** - 确保已安装:`xcode-select --install`
|
|
487
|
+
2. **Rosetta** - Apple Silicon 可以运行 x86_64 和 arm64 两种架构
|
|
488
|
+
3. **System Integrity Protection (SIP)** - 可能阻止修改系统目录,建议安装到用户目录
|
|
489
|
+
|
|
490
|
+
### Windows
|
|
491
|
+
|
|
492
|
+
#### 推荐方案:使用预编译包
|
|
493
|
+
|
|
494
|
+
```powershell
|
|
495
|
+
# 下载官方预编译包
|
|
496
|
+
# https://github.com/Hamlib/Hamlib/releases
|
|
497
|
+
|
|
498
|
+
# 解压到 C:\hamlib
|
|
499
|
+
# 设置环境变量
|
|
500
|
+
$env:HAMLIB_ROOT = "C:\hamlib"
|
|
501
|
+
|
|
502
|
+
# 构建 node-hamlib
|
|
503
|
+
npm run rebuild
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
#### 高级方案:使用 WSL2
|
|
507
|
+
|
|
508
|
+
在 Windows 11 或 Windows 10 (2004+) 上使用 WSL2:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
# 在 WSL2 中按照 Linux 步骤操作
|
|
512
|
+
wsl --install -d Ubuntu
|
|
513
|
+
wsl
|
|
514
|
+
|
|
515
|
+
# 进入 WSL2 后
|
|
516
|
+
cd /mnt/c/your/project
|
|
517
|
+
sudo apt-get update
|
|
518
|
+
sudo apt-get install -y autoconf automake libtool
|
|
519
|
+
node scripts/build-hamlib.js --minimal
|
|
520
|
+
npm run rebuild
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
#### 高级方案:使用 MSYS2
|
|
524
|
+
|
|
525
|
+
如果必须在 Windows 原生环境中构建:
|
|
526
|
+
|
|
527
|
+
1. 安装 [MSYS2](https://www.msys2.org/)
|
|
528
|
+
2. 在 MSYS2 终端中安装工具链:
|
|
529
|
+
```bash
|
|
530
|
+
pacman -S base-devel mingw-w64-x86_64-toolchain autoconf automake libtool
|
|
531
|
+
```
|
|
532
|
+
3. 克隆 Hamlib 并构建
|
|
533
|
+
4. 设置 `HAMLIB_ROOT` 环境变量
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## 进阶配置
|
|
538
|
+
|
|
539
|
+
### 使用特定版本的 Hamlib
|
|
540
|
+
|
|
541
|
+
如果需要使用特定版本而不是最新版本:
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
git clone https://github.com/Hamlib/Hamlib.git
|
|
545
|
+
cd Hamlib
|
|
546
|
+
git checkout 4.6.5 # 切换到特定标签或分支
|
|
547
|
+
./bootstrap
|
|
548
|
+
./configure --prefix=/usr/local --minimal
|
|
549
|
+
make -j$(nproc)
|
|
550
|
+
sudo make install
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### 启用 USB 设备支持
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
# Linux: 安装 libusb
|
|
557
|
+
sudo apt-get install -y libusb-1.0-0-dev
|
|
558
|
+
|
|
559
|
+
# macOS: 安装 libusb
|
|
560
|
+
brew install libusb
|
|
561
|
+
|
|
562
|
+
# 构建时会自动检测并启用
|
|
563
|
+
./configure --prefix=/usr/local --with-libusb=yes
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
### 启用 XML 支持
|
|
567
|
+
|
|
568
|
+
```bash
|
|
569
|
+
# Linux
|
|
570
|
+
sudo apt-get install -y libxml2-dev
|
|
571
|
+
|
|
572
|
+
# macOS
|
|
573
|
+
brew install libxml2
|
|
574
|
+
|
|
575
|
+
# 构建
|
|
576
|
+
./configure --prefix=/usr/local --with-xml-support=yes
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### 静态链接
|
|
580
|
+
|
|
581
|
+
如果需要静态链接 Hamlib(减少运行时依赖):
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
./configure \
|
|
585
|
+
--prefix=/usr/local \
|
|
586
|
+
--enable-shared=no \
|
|
587
|
+
--enable-static=yes
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**注意**:node-hamlib 默认配置为动态链接。
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## 清理和卸载
|
|
595
|
+
|
|
596
|
+
### 清理构建文件
|
|
597
|
+
|
|
598
|
+
```bash
|
|
599
|
+
cd Hamlib
|
|
600
|
+
make clean # 清理编译产物
|
|
601
|
+
make distclean # 清理所有生成文件
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
### 卸载 Hamlib
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
cd Hamlib
|
|
608
|
+
sudo make uninstall
|
|
609
|
+
|
|
610
|
+
# 手动清理(如果 make uninstall 不可用)
|
|
611
|
+
sudo rm -rf /usr/local/include/hamlib
|
|
612
|
+
sudo rm -f /usr/local/lib/libhamlib*
|
|
613
|
+
sudo rm -f /usr/local/bin/rigctl*
|
|
614
|
+
sudo rm -f /usr/local/bin/rotctl*
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
---
|
|
618
|
+
|
|
619
|
+
## 参考资源
|
|
620
|
+
|
|
621
|
+
- [Hamlib 官方网站](https://hamlib.github.io/)
|
|
622
|
+
- [Hamlib GitHub 仓库](https://github.com/Hamlib/Hamlib)
|
|
623
|
+
- [Hamlib 构建文档](https://github.com/Hamlib/Hamlib/blob/master/README)
|
|
624
|
+
- [node-hamlib 项目](https://github.com/your-repo/node-hamlib)
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## 贡献和反馈
|
|
629
|
+
|
|
630
|
+
如果在构建过程中遇到问题或有改进建议,欢迎:
|
|
631
|
+
|
|
632
|
+
1. 提交 [GitHub Issue](https://github.com/your-repo/node-hamlib/issues)
|
|
633
|
+
2. 参与 [Discussions](https://github.com/your-repo/node-hamlib/discussions)
|
|
634
|
+
3. 提交 Pull Request
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
**最后更新**: 2024-11-07
|
|
639
|
+
|
|
640
|
+
如有问题,请参考 [故障排除指南](troubleshooting.md) 或在项目 Issues 中提问。
|