You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:42:44