谅潭好 发表于 2025-6-25 17:26:45

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

原文永久链接: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/
本次目的用来解决类似这样的问题:
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found也就是系统自带的 libstdc++ 版本过低
## 查看当前可用的 GLIBCXX 版本
strings /usr/lib64/libstdc++.so.6 | grep ^GLIBCXX解决:编译安装高版本gcc

(潜在问题:产生的文件数量是巨量的 13W+,编译耗时特别长 6核6线程也需要1小时以上)
## 可选:安装编译要用的依赖
yum install texinfo

GCC_VERSION=10.5.0

cd /data-nas/linux/files/download
wget https://mirrors.aliyun.com/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
tar -zxf gcc-${GCC_VERSION}.tar.gz
mv gcc-${GCC_VERSION} /data-nas/linux/software/_installation_dir/
cd /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}
# 这里就是下载4个软件压缩包,国内没找到合适的镜像,可以开代理下载
./contrib/download_prerequisites
mkdir build && cd build
../configure --prefix=/data-nas/linux/software/gcc-${GCC_VERSION} --disable-multilib --enable-languages=all
make -j6
make install
# 最好顺手删掉编译的目录,文件数量太庞大了
rm -rf /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}由于gcc的bin和动态库等文件数量都比较多,而且可能会切换不同版本的gcc,因此本次不考虑做软链到_shortcut,而是直接添加环境变量,编辑 /etc/profile,添加内容如下:
## gcc PATH
GCC_VERSION=10.5.0
PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/bin:$PATH
CPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/include:$CPATH
LIBRARY_PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/lib64:/data-nas/linux/software/gcc-${GCC_VERSION}/lib:$LIBRARY_PATH
LD_LIBRARY_PATH=$LIBRARY_PATH
MANPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/share/man:$MANPATH
unset GCC_VERSION
export PATH CPATH LIBRARY_PATH LD_LIBRARY_PATH MANPATH验证安装:
gcc --versioncentos-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
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

name=CentOS-7 - SCLo rh
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo rh Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/rh/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo rh Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLoCentOS-SCLo-scl.repo

name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/sclo/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo sclo Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo


name=CentOS-7 - SCLo sclo Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo配置完后,刷新缓存,然后安装:
yum makecache
## 查看有哪些版本
yum list available devtoolset-*
## 可以多安装几个版本
yum install devtoolset-11
yum install devtoolset-8
用法:

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

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 在centos7等旧版linux上用国内源下载源码编译安装gcc并配置环境变量