centos7下 gcc和glibc升级笔记

gcc和glibc升级笔记

1、背景介绍
最近要在linux环境下编译R3D-SDK,在文档上看到有如下的要求:
GCC 5.3.1+, Glibc 2.23+ on Linux Intel Kernel 2.6.0+, POSIX
support with pthreads (NPTL), libuuid & Large File Support (LFS)
所以必须要升级gcc和glibc
尝试离线升级gcc 7.3成功了
升级glibc 2.25失败了,导致机子都崩了
后来在一新的环境下,尝试了glibc 2.23,成功了,gcc是在线升级的,在此记录一下

环境介绍:rpm -q centos-release
centos-release-7-5.1804.el7.centos.x86_64
查看linux环境:uname -a
Linux ws295 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
查看gcc环境:gcc --version
查看glibc环境:ldd --version

2、如果没有gcc,那么就先安装
gcc离线安装教程的参考网址是:
https://www.cnblogs.com/liuxingcheng/p/11404806.html
https://www.cnblogs.com/lvpengbo/p/12719535.html
我这里是在线升级了

由于当前新机子,环境没有gcc,安装:
yum -y install gcc
默认安装的是gcc4.8.5,然而。。当前我需要的是5.3.1+的

3、安装多版本的gcc

Software Collections(SCL)可以帮助解决 RHEL/CentOS 下的软件安装、软件依赖、多版本并存等问题,
因为SCL 的创建就是为了给 RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,
同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突。

1)安装和配置SCL的命令:sudo yum install centos-release-scl scl-utils-build scl-utils

(查看 SCL 中可用包的完整列表: yum list all --enablerepo=‘centos-sclo-rh’
查看SCL支持的gcc的版本:yum list all --enablerepo=‘centos-sclo-rh’|grep gcc)

2)安装所有版本的gcc:
yum install devtoolset-3-gcc.x86_64 devtoolset-3-gcc-c++.x86_64 devtoolset-3-gcc-plugin-devel.x86_64 devtoolset-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 devtoolset-4-gcc-gdb-plugin.x86_64 devtoolset-4-gcc-plugin-devel.x86_64 devtoolset-4-libccjit.x86_64 devtoolset-4-libgccjit-devel.x86_64 devtoolset-4-libgccjit-docs.x86_64 devtoolset-6-gcc.x86_64 devtoolset-6-gcc-cc.x86_64 devtoolset-6-gcc-gdb-plugin.x86_64 devtoolset-6-gcc-plugin-devel.x86_64 devtoolset-6-libgccjit.x86_64 devtoolset-6-libgccjit-devel.x86_64 devtoolset-6-libgccjit-docs.x86_64 devtoolset-7-gcc.x86_64 devtoolset-7-gcc-c++.x86_64 devtoolset-7-gcc-gdb-plugin.x86_64 devtoolset-7-gcc-plugin-devel.x86_64 devtoolset-7-libgccjit.x86_64 devtoolset-7-libgccjit-devel.x86_64 devtoolset-7-libgccjit-docs.x86_64 devtoolset-8-gcc.x86_64 devtoolset-8-gcc-c++.x86_64 devtoolset-8-gcc-gdb-plugin.x86_64 devtoolset-8-gcc-plugin-devel.x86_64 devtoolset-8-libgccjit.x86_64 devtoolset-8-libgccjit-devel.x86_64 devtoolset-8-libgccjit-docs.x86_64 gcc.x86_64 gcc-c++.x86_64 gcc-plugin-devel.x86_64 libgcc.i686 libgcc.x86_64

3)查看SCL已安装的软件版本:scl --list

4)切换gcc的版本:scl enable devtoolset-8 bash
在指向gcc --version 会发现已经切到gcc8了

5)退出:exit

6)附:SCL的常用命令:
scl --list 或scl -l
scl --help 或 scl -h
scl enable #使用scl来执行command命令
scl enable devtoolset-4 bash #使用scl创建一个scl包的bash会话环境
exit #退出当前scl bash环境,恢复成系统bash环境

4、最关键的:升级glibc

参考网址:
https://blog.csdn.net/qq_20989105/article/details/90712139

这个其实应该是最安全的,但还不知道该怎么做
https://www.ibm.com/developerworks/cn/linux/l-cn-glibc-upd/

首先一定要多开几个窗口

下载glibc:http://ftp.gnu.org/gnu/glibc/
解压:tar -xvf glibc-2.23.tar.gz

进入目录:cd glibc-2.23

创建build目录并进入:mkdir build && cd build

配置Makefile文件:…/configure --prefix=/usr

编译:make

安装:make install

期间会碰到如下问题:

gawk '/\.gnu\.glibc-stub\./ { \
	  sub(/\.gnu\.glibc-stub\./, "", $2); \
	  stubs[$2] = 1; } \
	END { for (s in stubs) print "#define __stub_" s }' > /root/temp/glibc-2.23/build/math/stubsT
gawk: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header
make[2]: *** [/root/temp/glibc-2.23/build/math/stubs] Error 127
make[2]: Leaving directory `/root/temp/glibc-2.23/math'
make[1]: *** [math/subdir_install] Error 2
make[1]: Leaving directory `/root/temp/glibc-2.23'
make: *** [install] 错误 2

不要怕,在另一个窗口进行如下操作:
#cd /lib64
#ll libm.so.6
#unlink libm.so.6
#ln -s libm-2.23.so libm.so.6
#ll libm.so.6

继续make install

当最后看到如下字样,表示升级成功啦!
Your new glibc installation seems to be ok.

开心~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值