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

CMake配置时C/C++编译器识别未知及损坏问题求助

解决CMake无法识别C/CXX编译器的问题

先把你遇到的报错信息贴出来方便定位:

-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- broken
CMake Error at /home/pranto/.local/lib/python2.7/site-packages/cmake/data/share/cmake-3.12/Modules/CMakeTestCCompiler.cmake:52 (message):
The C compiler "/usr/bin/cc"

我碰到过好几次类似的问题,结合你的环境(CMake 3.12.0 + GCC 7.4.0),给你几个针对性的排查和解决步骤,应该能搞定:

1. 检查cc/c++符号链接是否正确关联GCC

CMake默认会找/usr/bin/cc作为C编译器,但如果这个符号链接没指向你的GCC 7.4.0,就会出问题。先查一下:

ls -l /usr/bin/cc /usr/bin/c++

如果输出里cc不是指向/usr/bin/gcc(或者gcc-7),c++不是指向/usr/bin/g++(或者g++-7),就重新创建链接:

sudo rm /usr/bin/cc /usr/bin/c++
sudo ln -s /usr/bin/gcc /usr/bin/cc
sudo ln -s /usr/bin/g++ /usr/bin/c++

2. 彻底清理CMake缓存,从头构建

之前的构建缓存可能残留了错误配置,导致CMake一直走老路。进入你的项目构建目录,删掉所有CMake生成的文件:

cd your-build-folder  # 换成你的实际构建目录
rm -rf CMakeCache.txt CMakeFiles/ Makefile

然后重新运行CMake试试。

3. 直接给CMake指定编译器路径

如果符号链接没问题,但CMake还是识别不到,那就跳过自动检测,直接告诉它用你的GCC:

cmake .. -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++

这里的..是你的项目源码目录,根据实际情况调整。

4. 先确认GCC本身能正常工作

有时候问题不在CMake,而是GCC本身依赖缺失导致无法运行。先测试一下GCC能不能编译最简单的程序:

echo "int main() { return 0; }" > test.c
gcc test.c -o test
./test

如果这个过程报错,说明GCC本身有问题,以Ubuntu/Debian为例,可以重新安装GCC 7.4的完整包:

sudo apt-get install --reinstall gcc-7 g++-7

5. 考虑升级CMake版本

CMake 3.12.0是2018年的老版本了,虽然官方说支持GCC 7.x,但可能存在一些兼容性小bug。如果前面的方法都没用,可以试试升级到一个更新的稳定版本(比如3.20以上),新版本的编译器检测逻辑更健壮。

内容的提问来源于stack exchange,提问作者Pranto

火山引擎 最新活动