找回密码
 立即注册
首页 业界区 业界 在centos7等旧版linux上用国内源下载源码编译安装gcc并 ...

在centos7等旧版linux上用国内源下载源码编译安装gcc并配置环境变量

谅潭好 2025-6-25 17:26:45
原文永久链接:https://forum.piwind.com/d/23-zai-centos7deng-jiu-ban-linuxshang-yong-guo-nei-yuan-xia-zai-yuan-ma-bian-yi-an-zhuang-gccbing-pei-zhi-huan-jing-bian-liang
Date: 2025-06-25
前言:

  • centos7, ubuntu-18.04等已经EOL的系统已经不推荐用了,但是由于之前做的本地服务器一直用的是centos-7.9,稳定运行5年了,就不去换系统了
  • 以下仅为个人环境下的记录,仅供参考,勿照抄使用
  • 对于大多数不熟悉linux的用户,可以把这里的流程作为最佳实践,因为我写的方案本身就是企业级的解决方案和规划,基本都是基于官方文档的思路
  • gcc版本可以自己去仓库中选择,能成功编译下来即可,无相应开发需求就无需纠结哪个版本
参考链接:

  • gcc官网:https://www.gnu.org/software/gcc/
  • gcc下载:https://ftp.gnu.org/gnu/gcc/
  • 安装说明:Installing GCC - GNU Project
  • gcc国内镜像:https://mirrors.aliyun.com/gnu/gcc/
本次目的用来解决类似这样的问题:
  1. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
  2. /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found
  3. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
复制代码
也就是系统自带的 libstdc++ 版本过低
  1. ## 查看当前可用的 GLIBCXX 版本
  2. strings /usr/lib64/libstdc++.so.6 | grep ^GLIBCXX
复制代码
解决:编译安装高版本gcc

(潜在问题:产生的文件数量是巨量的 13W+,编译耗时特别长 6核6线程也需要1小时以上)
  1. ## 可选:安装编译要用的依赖
  2. yum install texinfo
  3. GCC_VERSION=10.5.0
  4. cd /data-nas/linux/files/download
  5. wget https://mirrors.aliyun.com/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
  6. tar -zxf gcc-${GCC_VERSION}.tar.gz
  7. mv gcc-${GCC_VERSION} /data-nas/linux/software/_installation_dir/
  8. cd /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}
  9. # 这里就是下载4个软件压缩包,国内没找到合适的镜像,可以开代理下载
  10. ./contrib/download_prerequisites
  11. mkdir build && cd build
  12. ../configure --prefix=/data-nas/linux/software/gcc-${GCC_VERSION} --disable-multilib --enable-languages=all
  13. make -j6
  14. make install
  15. # 最好顺手删掉编译的目录,文件数量太庞大了
  16. rm -rf /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}
复制代码
由于gcc的bin和动态库等文件数量都比较多,而且可能会切换不同版本的gcc,因此本次不考虑做软链到_shortcut,而是直接添加环境变量,编辑 /etc/profile,添加内容如下:
  1. ## gcc PATH
  2. GCC_VERSION=10.5.0
  3. PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/bin:$PATH
  4. CPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/include:$CPATH
  5. LIBRARY_PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/lib64:/data-nas/linux/software/gcc-${GCC_VERSION}/lib:$LIBRARY_PATH
  6. LD_LIBRARY_PATH=$LIBRARY_PATH
  7. MANPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/share/man:$MANPATH
  8. unset GCC_VERSION
  9. export PATH CPATH LIBRARY_PATH LD_LIBRARY_PATH MANPATH
复制代码
验证安装:
  1. gcc --version
复制代码
centos-release-scl(解决不了缺少动态库的问题)

参考链接:

  • bash - How to properly upgrade gcc on Centos 7? - Super User
  • ABI Policy and Guidelines
  • gcc - GLIBCXX_3.4.21 not found on CentOS 7 - Stack Overflow
  1. yum install -y centos-release-scl
复制代码
安装后在 /etc/yum.repos.d 多2个repo文件,但是已经过期了,因此本次将其改为 中科大的SCL yum源:
https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/
将2个repo文件改为如下:
CentOS-SCLo-scl-rh.repo
  1. [centos-sclo-rh]
  2. name=CentOS-7 - SCLo rh
  3. baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/rh/
  4. #mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
  5. gpgcheck=1
  6. enabled=1
  7. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  8. [centos-sclo-rh-testing]
  9. name=CentOS-7 - SCLo rh Testing
  10. baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/
  11. gpgcheck=0
  12. enabled=0
  13. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  14. [centos-sclo-rh-source]
  15. name=CentOS-7 - SCLo rh Sources
  16. baseurl=http://vault.centos.org/centos/7/sclo/Source/rh/
  17. gpgcheck=1
  18. enabled=0
  19. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  20. [centos-sclo-rh-debuginfo]
  21. name=CentOS-7 - SCLo rh Debuginfo
  22. baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
  23. gpgcheck=1
  24. enabled=0
  25. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
复制代码
CentOS-SCLo-scl.repo
  1. [centos-sclo-sclo]
  2. name=CentOS-7 - SCLo sclo
  3. baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/sclo/
  4. #mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
  5. gpgcheck=1
  6. enabled=1
  7. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  8. [centos-sclo-sclo-testing]
  9. name=CentOS-7 - SCLo sclo Testing
  10. baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
  11. gpgcheck=0
  12. enabled=0
  13. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  14. [centos-sclo-sclo-source]
  15. name=CentOS-7 - SCLo sclo Sources
  16. baseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/
  17. gpgcheck=1
  18. enabled=0
  19. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
  20. [centos-sclo-sclo-debuginfo]
  21. name=CentOS-7 - SCLo sclo Debuginfo
  22. baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
  23. gpgcheck=1
  24. enabled=0
  25. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
复制代码
配置完后,刷新缓存,然后安装:
  1. yum makecache
  2. ## 查看有哪些版本
  3. yum list available devtoolset-*
  4. ## 可以多安装几个版本
  5. yum install devtoolset-11
  6. yum install devtoolset-8
复制代码
1.png

用法:

  • 仅在当前shell中启用:
    1. scl enable devtoolset-8 bash
    2. gcc --version
    复制代码
  • 每次登录shell都生效,那就往 ~/.bash_profile 中添加内容:
    1. source /opt/rh/devtoolset-8/enable
    复制代码
删除:
  1. yum remove devtoolset-8*
  2. rm -rf /opt/rh/devtoolset-8
复制代码
本文声明:

  • 此文可能会存在排版、样式不美观,图片无法显示等问题
  • 文章内容在原文永久链接中会定期更新,此文不做同步更新
  • 限于篇幅长度限制,此文可能会有裁剪
建议阅读原文链接

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册