You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下用Homebrew安装的Go包无法找到C头文件问题

解决go-soapy-sdr找不到SoapySDR头文件的问题

方法1:临时设置环境变量(当前终端有效)

直接在终端里配置cgo需要的头文件和库路径,再运行程序:

export CGO_CFLAGS="-I/opt/Homebrew/Cellar/soapysdr/0.8.1_1/include"
export CGO_LDFLAGS="-L/opt/Homebrew/Cellar/soapysdr/0.8.1_1/lib"
go run .

如果想长期生效,把前两行添加到你的shell配置文件(比如~/.zshrc或~/.bashrc)里,重启终端后就不用每次手动输入了。

方法2:命令行一次性传递参数

不用单独设置环境变量,直接把参数拼在go run命令前:

CGO_CFLAGS="-I/opt/Homebrew/Cellar/soapysdr/0.8.1_1/include" CGO_LDFLAGS="-L/opt/Homebrew/Cellar/soapysdr/0.8.1_1/lib" go run .

方法3:用pkg-config自动获取路径(推荐)

Homebrew安装的SoapySDR自带pkg-config配置文件,能自动生成正确的编译参数,不用硬写版本号:

# 让pkg-config找到SoapySDR的配置文件
export PKG_CONFIG_PATH="/opt/Homebrew/Cellar/soapysdr/0.8.1_1/lib/pkgconfig:$PKG_CONFIG_PATH"
# 用pkg-config输出设置cgo参数
export CGO_CFLAGS="$(pkg-config --cflags soapysdr)"
export CGO_LDFLAGS="$(pkg-config --libs soapysdr)"
# 运行程序
go run .

以后SoapySDR更新版本,你只需要用Homebrew升级,不用改这些命令。

补充:检查Homebrew的默认链接

Homebrew通常会把库的头文件和动态库链接到/opt/Homebrew/include和/opt/Homebrew/lib,你可以先检查这些链接是否存在:

ls -l /opt/Homebrew/include/SoapySDR
ls -l /opt/Homebrew/lib/libSoapySDR.dylib

如果没有链接,手动创建:

ln -s /opt/Homebrew/Cellar/soapysdr/0.8.1_1/include/SoapySDR /opt/Homebrew/include/SoapySDR
ln -s /opt/Homebrew/Cellar/soapysdr/0.8.1_1/lib/libSoapySDR.dylib /opt/Homebrew/lib/libSoapySDR.dylib

创建完成后,直接运行go run .就能正常编译了。

内容的提问来源于stack exchange,提问作者Jim Orcheson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:02:28