CentOS7安装GLIBC_2.29遇错误:关键程序缺失或版本过旧
在CentOS7中编译GLIBC 2.29时解决make与编译器版本问题
问题分析
执行../configure --prefix=/opt/glibc时触发错误,核心原因是:
- 系统默认
make版本为3.82,达不到GLIBC 2.29要求的最低版本(需≥4.0) - 默认gcc/g++版本(4.8.5)过旧,且出现
g++ can link programs... no的链接问题
解决步骤
1. 升级make工具
从源码编译安装高版本make:
# 下载make 4.4源码包 wget https://ftp.gnu.org/gnu/make/make-4.4.tar.gz # 解压并进入目录 tar -zxvf make-4.4.tar.gz cd make-4.4 # 配置安装路径为/usr/local ./configure --prefix=/usr/local # 编译安装 make sudo make install # 替换系统默认make命令 sudo ln -sf /usr/local/bin/make /usr/bin/make # 验证版本 make --version
2. 升级gcc与g++编译器
使用CentOS的devtoolset工具链安装高版本编译器:
# 安装CentOS SCL源 sudo yum install -y centos-release-scl # 安装devtoolset-8(包含gcc 8.x版本,满足GLIBC 2.29要求) sudo yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ # 临时启用该版本编译器(当前会话生效) scl enable devtoolset-8 bash # 永久生效(写入bash配置文件) echo "source /opt/rh/devtoolset-8/enable" >> ~/.bashrc # 验证版本 gcc --version g++ --version
3. 重新编译GLIBC 2.29
回到之前的build目录,重新执行编译流程:
cd /path/to/glibc-2.29/build_dir sudo ../configure --prefix=/opt/glibc sudo make sudo make install
注意事项
- 不要将GLIBC安装到系统默认路径(如/usr),避免覆盖系统自带的GLIBC导致系统崩溃
- 使用新安装的GLIBC时,可通过
export LD_LIBRARY_PATH=/opt/glibc/lib:$LD_LIBRARY_PATH临时指定库路径,或在编译程序时通过-L/opt/glibc/lib -Wl,-rpath=/opt/glibc/lib参数指定
内容的提问来源于stack exchange,提问作者otto
相关产品推荐
相关产品推荐

