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

MacOS下GCC链接libsodium失败:Undefined symbols问题求助

解决libsodium编译时Undefined symbols链接错误

嘿,这问题我太熟啦!你遇到的Undefined symbols错误,本质是编译时只包含了头文件,但没链接libsodium的库文件——头文件里只有函数的声明(比如sodium_init()的原型),真正的函数实现是在libsodium的静态/动态库中,链接器需要明确知道要去找这个库。

问题根源

你的编译命令gcc -o test test.c只完成了编译(把C代码转成目标文件),但在链接阶段,找不到sodium_init()的具体实现,所以报错。

正确的编译命令

只需要在命令末尾加上-lsodium,告诉链接器要链接libsodium库:

gcc -o test test.c -lsodium

如果你的libsodium安装在非系统默认路径(比如你提到的/usr/local/include对应的库路径/usr/local/lib),可能还需要用-L参数指定库所在目录:

gcc -o test test.c -L/usr/local/lib -lsodium

更稳妥的方式(推荐)

用pkg-config自动获取libsodium的编译和链接参数,这样不管库装在哪里都能正确识别:

gcc -o test test.c $(pkg-config --cflags --libs libsodium)

额外验证步骤

你可以先检查系统里是否存在libsodium的库文件,确认安装完整性:

ls /usr/local/lib/libsodium*

如果能看到libsodium.a或libsodium.so之类的文件,说明库确实安装好了,用上面的命令就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:33