Ubuntu 22.04.2 LTS下Meson+clang++编译报错:ld无法找到-lstdc++
解决clang编译Meson项目时找不到-lstdc的问题
问题原因
clang++在Ubuntu环境下默认尝试链接GNU的libstdc++标准库,但系统中缺少对应的开发包,导致链接阶段报错。而gcc的c++编译器随安装过程自带了libstdc++的开发文件,因此可以正常构建。
解决方案
方案1:安装libstdc++开发包
直接安装Ubuntu系统中libstdc++的开发组件,补全缺失的库文件:
sudo apt update && sudo apt install libstdc++-dev
安装完成后重新执行你的Meson构建命令即可:
CC=clang CXX=clang++ meson setup clang-debug --buildtype=debug
方案2:切换使用LLVM的libc++标准库
如果更倾向于使用LLVM官方的libc++标准库,需要先安装对应的开发包:
sudo apt update && sudo apt install libc++-dev libc++abi-dev
然后在Meson构建时指定编译和链接参数,强制clang++使用libc++:
CC=clang CXX=clang++ meson setup clang-debug --buildtype=debug \ -Dcpp_args="-stdlib=libc++" \ -Dcpp_link_args="-stdlib=libc++ -lc++abi"
验证clang++的标准库配置
可以通过以下命令查看clang++当前默认使用的标准库:
clang++ -v -c dummy.cpp
在输出的#include <...> search starts here部分,可以看到默认的标准库路径,确认是libstdc++还是libc++。
内容的提问来源于stack exchange,提问作者hetepeperfan
相关产品推荐
相关产品推荐

