记录一下centos7.9升级gcc10.7出现的error

安装就看这个CentOS7.9源码编译安装gcc-10.4.0-CSDN博客

make时会报错


make[5]: Entering directory `/usr/local/gcc-10.4.0/build/x86_64-pc-linux-gnu/libstdc++-v3/po'
msgfmt -o de.mo ../../../../libstdc++-v3/po/de.po
msgfmt -o fr.mo ../../../../libstdc++-v3/po/fr.po
msgfmt: iconv failure: Argument list too long
make[5]: *** [de.mo] Error 1
make[5]: *** Waiting for unfinished jobs....
make[5]: *** [fr.mo] Segmentation fault (core dumped)
make[5]: Leaving directory `/usr/local/gcc-10.4.0/build/x86_64-pc-linux-gnu/libstdc++-v3/po'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/usr/local/gcc-10.4.0/build/x86_64-pc-linux-gnu/libstdc++-v3'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/usr/local/gcc-10.4.0/build/x86_64-pc-linux-gnu/libstdc++-v3'
make[2]: *** [all-stage1-target-libstdc++-v3] Error 2
make[2]: Leaving directory `/usr/local/gcc-10.4.0/build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/usr/local/gcc-10.4.0/build'
make: *** [all] Error 2

解决方案就是安装glibc2.28,下面的安装过程出自公司里一位同事(YB)的安装文档,respect

安装glibc2.28
1、下载并解压安装包:https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28
# 创建临时文件
mkdir build && cd build

2、更改环境变量:
[root@localhost build]# echo $LD_LIBRARY_PATH
:/usr/local/lib
[root@localhost build]# LD_LIBRARY_PATH=

3、编译安装 
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 安装
$ make -j2
$ make install

# 查询安装结果
$ strings /lib64/libc.so.6 | grep GLIBC

4、还原环境变量:
vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
//wq 保存退出,使之生效
source /etc/profile

5、建议,在执行 make install 之前,到 /usr/lib64目录中,通过ls -ltr记录下所有libc老版本对应的链接(防止系统错误后,无法使用ls -ltr命令)。

$ cd /usr/lib64
$ ls -ltr

# libc-2.17版本对应的链接:
libcidn.so.1 -> libcidn-2.17.so 
libcrypt.so.1 -> libcrypt-2.17.so 
libnsl.so.1 -> libnsl-2.17.so 
libnss_db.so.2 -> libnss_db-2.17.so 
libnss_hesiod.so.2 -> libnss_hesiod-2.17.so 
libnss_nis.so.2 -> libnss_nis-2.17.so 
libnss_nisplus.so.2 -> libnss_nisplus-2.17.so 
ld-linux-x86-64.so.2 -> /usr/lib64/ld-2.17.so 
libc.so.6 -> /lib64/libc-2.17.so 
libpthread.so.0 -> libpthread-2.17.so 
libdl.so.2 -> libdl-2.17.so 
libm.so.6 -> libm-2.17.so 
librt.so.1 -> librt-2.17.so 
libresolv.so.2 -> libresolv-2.17.so 
libnss_dns.so.2 -> libnss_dns-2.17.so 
libnss_compat.so.2 -> libnss_compat-2.17.so 
libutil.so.1 -> libutil-2.17.so 
libBrokenLocale.so.1 -> libBrokenLocale-2.17.so 
libanl.so.1 -> libanl-2.17.so 
libnss_files.so.2 -> libnss_files-2.17.so 
执行 make install 命令,如果出现上述系统错误,则根据使用sln命令重将上述链接链接到2.17版本,如果不确定哪个链接发生了错误,就全部重新链接。

# 使用sln重新链接 
$ sln libc-2.17.so libc.so.6
$ sln ld-2.17.so ld-linux-x86-64.so.2
全部链接恢复到2.17老版本后,系统恢复正常。重新执行 make 安装命令,即可成功将glibc升级到2.28新版本。成功升级后,所有lib链接都更新到了2.28版本上,
 

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值