Ubuntu22.04源码编译CMake时shell输出重复编译指令无限循环问题求助
Ubuntu22.04源码编译CMake3.27.7异常排查与解决
问题现象
在Ubuntu22.04上源码安装CMake3.27.7时,执行以下步骤:
tar -zxv -f cmake-3.27.7.tar.gz cd cmake-3.27.7 ./bootstrap
bootstrap脚本先输出正常的系统检测信息:
--------------------------------------------- CMake 3.27.7, Copyright 2000-2023 Kitware, Inc. and Contributors Found GNU toolchain C compiler on this system is: gcc C++ compiler on this system is: g++ Makefile processor on this system is: gmake g++ has setenv g++ has unsetenv g++ does not have environ in stdlib.h g++ has stl wstring g++ has <ext/stdio_filebuf.h> ---------------------------------------------
随后持续重复输出类似如下的编译指令,无法自动完成bootstrap,手动终止后执行make提示找不到Makefile:
g++ -D_FILE_OFFSET_BITS=64 -DCMAKE_BOOTSTRAP -DCMake_HAVE_CXX_MAKE_UNIQUE=1 -DCMake_HAVE_CXX_FILESYSTEM=1 -I/home/euler/Downloads/cmake-3.27.7/Bootstrap.cmk -I/home/euler/Downloads/cmake-3.27.7/Source -I/home/euler/Downloads/cmake-3.27.7/Source/LexerParser -I/home/euler/Downloads/cmake-3.27.7/Utilities/std -I/home/euler/Downloads/cmake-3.27.7/Utilities -c /home/euler/Downloads/cmake-3.27.7/Source/cmDependsC.cxx -o cmDependsC.o
可能原因
- 编译依赖缺失:CMake源码编译需要openssl、curl等开发库,缺失会导致bootstrap阶段编译进程异常重复
- 系统内存不足:编译CMake的bootstrap临时程序需要足够内存,内存不足会导致编译卡住或重试
- bootstrap脚本兼容性问题:部分环境下默认bootstrap参数可能触发编译循环
解决方案
1. 安装必要编译依赖
执行以下命令安装所有CMake编译所需的基础依赖:
sudo apt update sudo apt install build-essential libssl-dev libcurl4-openssl-dev libz-dev
2. 清理残留并重新执行bootstrap(带日志)
清理之前bootstrap生成的临时文件,开启详细日志重新执行,便于定位具体错误:
cd cmake-3.27.7 rm -rf Bootstrap.cmk CMakeCache.txt ./bootstrap --verbose --log-file bootstrap.log
执行完成后查看bootstrap.log,如果有具体错误可以针对性修复。
3. 临时扩容内存(若内存不足)
如果系统物理内存小于2GB,建议临时添加swap分区:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
编译完成后可移除swap:
sudo swapoff /swapfile && sudo rm /swapfile
4. 跳过bootstrap,用系统CMake引导编译
如果上述方法无效,可先通过包管理器安装基础版本CMake,再用它来配置源码构建:
sudo apt install cmake mkdir -p build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local make -j$(nproc) sudo make install
内容的提问来源于stack exchange,提问作者a young bird
相关产品推荐
相关产品推荐

