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

Ubuntu 16.04编译Mbuni遇error adding symbols错误的解决求助

解决Ubuntu 16.04下Mbuni编译时的链接错误

错误原因分析

你遇到的问题是典型的静态库未使用-fPIC编译导致无法链接共享库的场景,错误提示已经明确指出了根源:

/usr/bin/ld: /usr/local/lib/kannel/libwap.a(wsp_headers.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC

Mbuni编译时需要生成共享库(libmms.so),但依赖的Kannel静态库libwap.a在编译时没有添加-fPIC参数,导致64位系统下无法生成位置无关的共享对象,最终触发链接错误。

解决方案

要修复这个问题,核心是重新编译Kannel并强制添加-fPIC参数,再重新编译Mbuni,具体步骤如下:

1. 清理现有Kannel安装

如果之前已经安装了Kannel,先彻底清理残留文件:

# 卸载已安装的Kannel(进入Kannel源码目录执行)
sudo make -C /path/to/your/kannel-source uninstall
# 删除残留的库和头文件
sudo rm -rf /usr/local/lib/kannel/
sudo rm -rf /usr/local/include/kannel/

2. 重新编译带-fPIC参数的Kannel

获取与Mbuni版本兼容的Kannel源码,进入源码目录后执行:

./bootstrap
# 关键:添加--with-cflags=-fPIC确保生成位置无关代码
./configure --with-cflags=-fPIC --enable-shared
make
sudo make install

--enable-shared参数会同时生成Kannel的共享库,能避免后续类似的静态库链接问题。

3. 重新编译Mbuni

回到Mbuni源码目录,清理之前的编译残留后重新执行编译流程:

make clean
./bootstrap
./configure --with-cflags=-fPIC --enable-shared
make
sudo make install

验证

编译完成后,可以通过以下命令检查生成的共享库是否正常:

ldd /usr/local/lib/libmms.so

如果输出中没有出现链接错误提示,说明问题已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:22:52