Kali Linux下Snap版CLion创建C项目时CMake编译失败求助
解决Kali Linux中Snap版CLion创建C项目的CMake链接错误
问题核心
使用Snap安装的CLion创建C可执行项目时,CMake检测C编译器失败,链接阶段报错:ld无法识别.relr.dyn段,提示系统的libc.so.6和ld-linux-x86-64.so.2不兼容、找不到。这是因为Snap的沙箱环境与Kali系统的新版glibc/Binutils不兼容,Snap自带的链接器版本过低,不支持glibc 2.34+引入的.relr.dyn重定位段。
解决办法
1. 更新系统工具链
首先确保系统的Binutils、gcc和libc开发包是最新版本,.relr.dyn需要Binutils 2.37及以上版本支持:
sudo apt update && sudo apt install --reinstall binutils gcc libc6-dev
验证链接器版本,确认输出版本号≥2.37:
ld --version
2. 配置CLion使用系统Ninja而非Snap自带版本
Snap版CLion默认使用自身打包的Ninja,可能强制调用Snap环境内的旧版链接器。修改CLion的CMake配置:
- 打开CLion,进入
File > Settings > Build, Execution, Deployment > Build Tools > CMake - 在
CMake options输入框中添加:-DCMAKE_MAKE_PROGRAM=/usr/bin/ninja - 点击
Apply后,删除原有的cmake-build-debug目录,重新执行CMake配置。
3. 切换到官方tar包安装的CLion(彻底解决环境隔离问题)
Snap的沙箱隔离可能持续导致系统库与工具链不兼容,直接使用JetBrains官方tar包安装CLion可完全复用系统工具链:
- 从JetBrains官网下载CLion的tar.gz包
- 解压到用户目录或系统目录(示例:
~/tools/):tar -xzf clion-*.tar.gz -C ~/tools/ - 运行
~/tools/clion-*/bin/clion.sh启动CLion - 首次启动时,在
Toolchains配置中选择System,确保编译器路径为/usr/bin/gcc,链接器自动使用系统的/usr/bin/ld
4. 若为旧版Kali,更新软件源到rolling分支
如果你的Kali是旧版本,默认软件源的Binutils版本不足,更新到rolling分支:
echo "deb http://http.kali.org/kali kali-rolling main non-free contrib" | sudo tee /etc/apt/sources.list sudo apt update && sudo apt upgrade binutils
内容的提问来源于stack exchange,提问作者Sebastien Fnt
相关产品推荐
相关产品推荐

