安装devtoolset来满足gcc不同版本的要求

本文介绍了在CentOS6中两种升级gcc版本的方法:手动编译安装和使用devtoolset。详细步骤包括创建yum源配置文件、安装所需版本的devtoolset及启用新版本的gcc。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在运维的工作内,经常要编译安装各种开源组件,以CentOS 6的用户来说,大部分时候用到gcc的时候都是4.4.7版本的,在绝大多数情况下编译一些东西还是够用的,但还是有个别软件对gcc的版本是有要求的,例如rethinkdb这个东西,就要求4.8.2以上的版本,为什么呢?因为要用c++11特性,这个在CentOS6中的默认gcc版本是不支持的。要解决这个问题一般有两种方法:

1、手动编译gcc>4.8的版本

2、安装devtoolset

第一种方法相对来说耗时耗力,适合真的想折腾的同学,第二种方法是偷懒用的,可以快速安装gcc的高版本来使用。

以下就说下devtoolset的安装方法

devtoolset目前有4个版本:devtoolset-1.1  devtoolset-2  devtoolset-3 devtoolset-4,以上版本分别对应gcc的版本为4.7、4.8、4.9、5.2

devtoolset-2的安装

touch /etc/yum.repos.d/devtools-2.repo,devtools-2.repo的内容:

[devtools2]
name=testing 2 devtools for CentOS $releasever 
baseurl=http://people.centos.org/tru/devtools-2/$releasever/$basearch/RPMS
enabled=1
gpgcheck=0

备用的升级源

[devtoolset2]
name=RedHat DevToolset v2 $releasever - $basearch
baseurl=http://puias.princeton.edu/data/puias/DevToolset/$releasever/$basearch/
enabled=1
gpgcheck=0

yum check-update

yum install devtoolset-2-gcc  devtoolset-2-gcc-c++

devtoolset-3和devtoolset-4的安装要更简单了,执行命令

yum install centos-release-scl-rh centos-release-scl

yum check-update

yum install devtoolset-3-gcc  devtoolset-3-gcc-c++

yum install devtoolset-3-gcc  devtoolset-3-gcc-c++

安装起来自己所需要的devtoolset后,接下来就需要启用了

source /opt/rh/devtoolset-2/enable

source /opt/rh/devtoolset-3/enable

source /opt/rh/devtoolset-4/enable

可通过gcc -v来验证当前gcc的版本,玩的开心

<think>我们正在CentOS 7上安装GCC和G++ 9.4.0版本。由于CentOS 7默认的仓库可能不提供较新版本GCC,因此我们需要从源代码编译安装。 步骤: 1. 安装必要的依赖包 2. 下载GCC 9.4.0源代码 3. 下载GCC所需的依赖库(GMP, MPFR, MPC, ISL等) 4. 配置编译环境 5. 编译并安装 注意:编译GCC需要较长时间,并且需要足够的磁盘空间(约10GB以上)。 根据引用[1]和引用[2]中的方法,我们可以按照以下步骤进行。 另外,引用[3]中提供了在Dockerfile中安装依赖的命令,我们可以参考其中的依赖包安装部分。 具体步骤如下: 1. 安装依赖包 首先,我们需要安装一些必要的工具和库: ```bash sudo yum groupinstall "Development Tools" sudo yum install wget texinfo bzip2 gzip tar glibc-devel libstdc++-devel # 安装GMP, MPFR, MPC等开发包(虽然GCC会自己下载,但为了确保系统有基础支持,可以安装系统提供的版本,但注意:编译GCC时还是需要特定版本的,所以这里主要是为了满足编译环境的基本要求) sudo yum install gmp-devel mpfr-devel libmpc-devel # 其他可能需要的依赖 sudo yum install zlib-devel ``` 2. 下载GCC 9.4.0源代码 ```bash wget https://ftp.gnu.org/gnu/gcc/gcc-9.4.0/gcc-9.4.0.tar.gz tar -xf gcc-9.4.0.tar.gz cd gcc-9.4.0 ``` 3. 下载依赖库 在GCC源码目录中,运行脚本自动下载所需的依赖库: ```bash ./contrib/download_prerequisites ``` 这个脚本会下载并解压GMP, MPFR, MPC, ISL等库,并创建符号链接。 4. 配置编译选项 为了避免在源码目录中编译,我们创建一个单独的编译目录: ```bash mkdir build cd build ``` 然后配置,这里我们指定安装目录为/opt/gcc-9.4.0,你也可以选择其他目录(如$HOME/gcc-9.4.0): ```bash ../configure --prefix=/opt/gcc-9.4.0 --enable-languages=c,c++ --disable-multilib ``` 注意: --enable-languages=c,c++:表示只编译C和C++编译器,如果需要其他语言如fortran, go可以添加。 --disable-multilib:表示只编译64位版本(如果你的系统是64位)。 5. 编译 ```bash make -j$(nproc) ``` 使用`nproc`命令获取CPU核心数,以并行编译加快速度。 6. 安装 ```bash sudo make install ``` 7. 设置环境变量 安装完成后,需要将新安装GCC添加到PATH中。编辑/etc/profile或用户自己的bashrc文件,添加: ```bash export PATH=/opt/gcc-9.4.0/bin:$PATH export LD_LIBRARY_PATH=/opt/gcc-9.4.0/lib64:$LD_LIBRARY_PATH ``` 然后执行`source /etc/profile`或重新登录。 8. 验证 ```bash gcc --version g++ --version ``` 注意:由于我们安装到了系统目录/opt下,所以需要sudo权限。如果安装到用户主目录,则不需要sudo。 另外,在编译过程中如果遇到依赖问题,可能需要安装额外的包。请根据错误信息安装相应的包。 问题:编译过程很长,并且需要大量的磁盘空间(大约需要10GB以上的临时空间),请确保有足够的空间。 替代方案:如果不想从源代码编译,可以考虑使用第三方仓库(如devtoolset),但devtoolset可能不提供9.4.0版本。例如,SCL仓库提供了较新版本GCC,但可能只提供到9.3.0(如devtoolset-9)。如果你可以接受9.3.0版本,可以按照以下步骤: 1. 安装SCL仓库: ```bash sudo yum install centos-release-scl ``` 2. 安装devtoolset-9(包含GCC 9.3.0): ```bash sudo yum install devtoolset-9 ``` 3. 启用: ```bash scl enable devtoolset-9 bash ``` 或者将其添加到bashrc中: ```bash echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc ``` 但是,由于用户明确要求9.4.0版本,因此如果必须使用9.4.0,则只能通过源码编译。 根据引用[1]中的方法,我们使用了类似的步骤。引用[2]中也提到了编译安装gcc-9.3.0,步骤类似。 因此,我们按照上述步骤进行。 如果遇到问题,请参考GCC官方安装指南:https://gcc.gnu.org/install/ 生成相关问题: 1. 如何卸载通过源代码安装GCC 9.4.0? 2. 在CentOS 7上安装多个版本GCC如何管理? 3. 编译GCC时出现错误怎么办? 4. 如何为通过源代码安装GCC设置默认版本(使用update-alternatives)? 5. 使用devtoolset安装GCC 9.3.0的详细步骤是什么?</think>### 在 CentOS 7 上安装 GCC/G++ 9.4.0 的完整指南 #### 方法 1:通过源码编译安装(推荐) 1. **安装依赖包** 首先安装必要的开发工具和库: ```bash sudo yum groupinstall "Development Tools" sudo yum install wget texinfo bzip2 gzip tar glibc-devel libstdc++-devel sudo yum install gmp-devel mpfr-devel libmpc-devel zlib-devel ``` 2. **下载 GCC 9.4.0 源码** ```bash wget https://ftp.gnu.org/gnu/gcc/gcc-9.4.0/gcc-9.4.0.tar.gz tar -xf gcc-9.4.0.tar.gz cd gcc-9.4.0 ``` 3. **下载依赖库** ```bash ./contrib/download_prerequisites # 自动下载GMP/MPFR/MPC/ISL等依赖 ``` 4. **配置编译选项** ```bash mkdir build cd build ../configure --prefix=/opt/gcc-9.4.0 \ --enable-languages=c,c++ \ --disable-multilib \ --with-system-zlib ``` 5. **编译与安装** ```bash make -j$(nproc) # 使用所有CPU核心加速编译 sudo make install # 约需2小时,确保磁盘空间>10GB ``` 6. **配置环境变量** 编辑 `/etc/profile.d/gcc.sh`: ```bash export PATH=/opt/gcc-9.4.0/bin:$PATH export LD_LIBRARY_PATH=/opt/gcc-9.4.0/lib64:$LD_LIBRARY_PATH ``` 生效配置: ```bash source /etc/profile ``` #### 方法 2:使用预编译包(快速) 若接受近似版本(如9.3.0),可通过SCL仓库安装: ```bash sudo yum install centos-release-scl sudo yum install devtoolset-9 scl enable devtoolset-9 bash # 临时启用 # 永久启用:将"source /opt/rh/devtoolset-9/enable"加入~/.bashrc ``` #### 验证安装 ```bash gcc --version # 应输出gcc (GCC) 9.4.0 g++ --version # 应输出g++ (GCC) 9.4.0 ``` #### 注意事项 1. **编译要求**: - 至少4GB内存,建议8GB+ - 磁盘空间>15GB - 完整编译需2-4小时(取决于CPU性能) 2. **多版本共存**: 使用`update-alternatives`管理多版本: ```bash sudo alternatives --install /usr/bin/gcc gcc /opt/gcc-9.4.0/bin/gcc 90 \ --slave /usr/bin/g++ g++ /opt/gcc-9.4.0/bin/g++ ``` 3. **卸载方法**: ```bash sudo rm -rf /opt/gcc-9.4.0 # 同时删除/etc/profile.d/gcc.sh ``` > **关键提示**:CentOS 7默认GCC版本为4.8.5,安装版本后需特别注意库路径配置。若编译软件时出现链接错误,尝试添加`-Wl,-rpath=/opt/gcc-9.4.0/lib64`解决动态库路径问题[^1][^2]。 --- ### 相关问题 1. 如何在CentOS 7上同时使用多个版本GCC编译器? 2. 编译GCC时出现`fatal error: gnu/stubs-32.h: No such file`错误如何解决? 3. 如何为GCC 9.4.0启用LTO(链接时优化)编译选项? 4. CentOS 7升级GCC后如何修复动态库依赖问题? 5. 使用源码编译安装GCC时如何减少编译时间? [^1]: GCC官方编译指南:https://gcc.gnu.org/install/ [^2]: 第三方编译实践参考:https://gist.github.com/yosoufe/ad45c45c10fe08abecbf53000d0d199f [^3]: CentOS依赖包安装参考:https://stackoverflow.com/a/36377951
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值