You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu环境下clang++使用lld链接时找不到libstdc++库的修复方案咨询

Ubuntu环境下clang使用lld链接时找不到libstdc库的修复方案咨询

遇到这种情况别着急,我来给你几个Ubuntu环境下亲测可行的解决思路:

  • 先确认核心依赖是否安装完整
    lld链接器和GNU标准库的开发包可能没装全,导致lld找不到libstdc++。执行下面的命令补全依赖:

    sudo apt update && sudo apt install lld libstdc++-dev
    

    安装完成后再重新尝试你的链接命令,大概率能解决问题。

  • 强制clang使用libstdc标准库
    部分clang版本默认会优先使用LLVM自家的libc标准库,而不是系统的libstdc。这时候你可以在链接时显式指定使用libstdc++,修改后的链接命令如下:

    /usr/bin/clang++ -fuse-ld=lld -stdlib=libstdc++ prog.o -o prog
    

    -stdlib=libstdc++这个参数会强制clang调用GNU的标准库进行链接,避开libc++的干扰。

  • 手动指定libstdc++的库路径
    如果上面的方法没用,可能是lld找不到libstdc的存放路径。先找到libstdc.so的位置:

    find /usr -name libstdc++.so
    

    假设输出路径是/usr/lib/x86_64-linux-gnu/libstdc++.so,就在链接命令中加上-L参数指定这个路径:

    /usr/bin/clang++ -fuse-ld=lld -L/usr/lib/x86_64-linux-gnu prog.o -o prog
    
  • 检查clang与libstdc++版本兼容性
    如果你的clang版本过新或过旧,可能和系统预装的libstdc版本不兼容。可以尝试升级clang或libstdc

    # 以安装clang-17和对应版本的libstdc++为例,根据你的Ubuntu版本调整
    sudo apt install clang-17 libstdc++-12-dev
    

    安装后使用新版本的clang(比如clang++-17)重新编译链接试试。

备注:内容来源于stack exchange,提问作者Foobar

火山引擎 最新活动