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

C++共享库链接出现undefined reference、DSO missing报错如何解决?

问题原因

  • 自定义库与系统库重名冲突:你将自己实现的库命名为libc.so,与系统标准C库的文件名完全一致。链接时-lc参数会优先匹配系统标准C库,你自己编写的包含kk()函数的库完全没有被正常链接,这也是你调整-lc参数后报错无变化的核心原因,同时命名冲突还导致链接器加载系统libc的逻辑异常,才触发了__libc_start_main符号缺失的报错。
  • 共享库依赖未显式声明:编译生成libb.so时,没有显式链接它依赖的自定义C库,不符合现代ld链接器的DSO链接规则,也会触发符号缺失报错。

解决方法

  1. 重命名自定义库,避免和系统库重名,比如将你的C逻辑对应的库命名为libmyc.so
  2. 按如下流程重新编译:
    • 编译自定义C库:g++ -fPIC -shared c.cpp -o libmyc.so
    • 编译B库时显式链接依赖的自定义C库:g++ -fPIC -shared b.cpp -o libb.so -L. -lmyc
    • 编译生成最终可执行文件:g++ a.cpp -o a -L. -lb -lmyc
  3. 运行时需要将当前目录加入动态库搜索路径,执行命令为:LD_LIBRARY_PATH=. ./a

内容的提问来源于stack exchange,提问作者caiyi.zcy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:18:03