编译安装CMake时提示'cannot find /usr/lib/libc_nonshared.a'错误
问题本质
编译CMake时出现/usr/bin/ld: cannot find /usr/lib/libc_nonshared.a错误,核心原因是系统缺少glibc静态库组件,或者静态库的默认路径不在链接器的搜索范围内。
解决方案
安装glibc静态库包
根据服务器发行版执行对应命令:- Debian/Ubuntu 系列:
注:这个包会把sudo apt-get install libc6-devlibc_nonshared.a安装在/usr/lib/x86_64-linux-gnu/而非/usr/lib/,这是64位系统的标准路径。 - RHEL/CentOS 系列:
sudo yum install glibc-static # 新版系统可替换为 sudo dnf install glibc-static
- Debian/Ubuntu 系列:
手动指定静态库路径(安装后仍报错时)
执行bootstrap命令时,通过LDFLAGS参数指定库的实际路径:./bootstrap LDFLAGS="-L/usr/lib/x86_64-linux-gnu"之后正常运行
make和sudo make install即可。更高效的替代方案:用预编译二进制包安装
跳过编译步骤,直接使用官方预编译包:- 下载对应版本的二进制包(以3.29.0为例):
wget https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.tar.gz - 解压到/usr/local目录:
sudo tar -zxvf cmake-3.29.0-linux-x86_64.tar.gz -C /usr/local/ - 将CMake路径加入环境变量:
echo 'export PATH=/usr/local/cmake-3.29.0-linux-x86_64/bin:$PATH' >> ~/.bashrc source ~/.bashrc
验证安装:执行
cmake --version确认版本是否正确。- 下载对应版本的二进制包(以3.29.0为例):
内容的提问来源于stack exchange,提问作者Zuguang He
相关产品推荐
相关产品推荐

