解决ubuntu系统cannot find -lc++abi: No such file or directory

文章讲述了在Ubuntu22.04上使用LLVM15的Clang编译器时遇到的libc++库问题,介绍了如何通过apt安装、CMakeLists.txt中的配置以及处理缺失的symbolic链接的解决方案。

随着CentOS的没落,使用ubuntu的越来越多,而且国外貌似也比较流行使用ubuntu,像LLVM/Clang就有专门针对ubuntu编译二进制发布文件:
在这里插入图片描述

ubuntu本身也可以直接通过apt install命令来安装编译好的clang编译器。不过目前22.04版本下最高可安装版本还是停留在LLVM 15。

在LLVM 15中使用Clang编译器时,如果想要使用libc++库时,需要使用下面的命令进行安装:

sudo apt install libc++-15-dev
sudo ldconfig

安装好后,可以在CMakeLists.txt中add_executable后面添加:

if (CMAKE_CXX_COMPILER MATCHES "clang")
target_compile_options(${PROJECT_NAME} PRIVATE -stdlib=libc++)
target_link_libraries(${PROJECT_NAME} PRIVATE c++)
endif()

来启用libc++

笔者在使用时报错:
在这里插入图片描述
查看/usr/lib/x86_64-linux-gnu目录:
在这里插入图片描述

未发现有libc++abi.so,只有libc++abi.so.1libc++abi.so.1.0,这应该是ubuntu官方构建的一个BUG,需要手动创建一个符号链接即可:

/usr/lib/x86_64-linux-gnu$ sudo ln -s libc++abi.so.1 libc++abi.so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值