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




