在CentOS 7/8系统中如何安装特定版本的gcc 5?

在 CentOS 系统中,尤其是长期支持版本如 CentOS 7,其默认的软件源提供的 GCC 版本可能相对陈旧,许多现代软件项目或特定的开发环境要求使用更新版本的编译器,GCC 5.x 系列,GCC 5 引入了对 C++11/C++14 更好的支持和性能优化,在 CentOS 上安装 GCC 5 成为一个常见的需求,本文将详细介绍两种主流的安装方法:使用软件集(SCL)和从源码编译,并分析其优劣,帮助您根据自身需求选择最合适的方案。

在CentOS 7/8系统中如何安装特定版本的gcc 5?

推荐方法:使用软件集 (SCL)

对于绝大多数用户而言,使用软件集是在 CentOS 上安装和管理多个软件版本(包括 GCC)的最佳实践,SCL 的核心优势在于其非侵入性,它允许您在不覆盖系统默认工具链的前提下,安装并使用新版本的软件,从而保证系统的稳定性和安全性,对于 CentOS 7,GCC 5.3 版本包含在 devtoolset-4 中。

安装 SCL 仓库

您需要确保系统已安装 centos-release-scl,这个软件包提供了访问 CentOS SCL 仓库所需的配置文件。

sudo yum install -y centos-release-scl

执行此命令后,Yum 的仓库配置中将新增 SCL 相关的源,接下来就可以安装所需的开发工具集了。

安装 Devtoolset-4

Devtoolset 是 Red Hat 和 CentOS 为开发者提供的一套工具链,devtoolset-4 对应的就是 GCC 5.3,安装这个工具集会一并安装 GCC 5 及其相关的开发工具,如 g++gdb 等。

sudo yum install -y devtoolset-4-toolchain

这个过程会自动解决并下载所有依赖项,安装过程相对快速。

启用 GCC 5 环境

仅仅安装 devtoolset-4 并不会使其成为系统的默认编译器,您需要手动启用它所提供的环境,启用操作会在当前的 Shell 会话中临时修改 PATHLD_LIBRARY_PATH 等环境变量,使得 gcc 命令指向新安装的 GCC 5。

scl enable devtoolset-4 bash

执行上述命令后,您会进入一个新的 Bash Shell,在这个 Shell 中,您可以验证 GCC 的版本。

验证安装

在新启用的 Shell 中,运行以下命令来检查 GCC 版本:

在CentOS 7/8系统中如何安装特定版本的gcc 5?

gcc --version

如果输出信息中包含 gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 或类似的版本号,则表明安装和启用均已成功。

永久启用(可选)

如果您希望每次登录时都自动使用 GCC 5,可以将启用命令添加到 Shell 的配置文件中,~/.bashrc

echo "source scl_source enable devtoolset-4" >> ~/.bashrc

添加后,重新加载配置文件或退出并重新登录即可生效。


替代方法:从源码编译安装

从源码编译提供了最大的灵活性,您可以自定义安装路径、编译选项以及支持的语言,这个过程耗时更长、步骤更复杂,且需要解决更多的依赖问题,仅推荐在无法使用 SCL 或需要高度定制化编译器的高级用户场景下使用。

安装编译依赖

编译 GCC 本身需要一个可用的 C 和 C++ 编译器(通常是系统自带的旧版本 GCC),以及一系列开发库。

sudo yum groupinstall -y "Development Tools"
sudo yum install -y gmp-devel mpfr-devel libmpc-devel wget

下载并解压 GCC 5 源码

从 GNU 官方 FTP 站点下载 GCC 5 的稳定源码包,gcc-5.5.0。

wget https://ftp.gnu.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -xzf gcc-5.5.0.tar.gz
cd gcc-5.5.0

下载必备依赖

GCC 源码目录提供了一个便利脚本,可以自动下载编译所需的 GMP、MPFR 和 MPC 等依赖库。

./contrib/download_prerequisites

配置编译选项

在CentOS 7/8系统中如何安装特定版本的gcc 5?

为了不与系统默认的 GCC 冲突,建议将其安装到独立的目录,/usr/local/gcc5

mkdir build && cd build
../configure --prefix=/usr/local/gcc5 --enable-languages=c,c++ --disable-multilib
  • --prefix: 指定安装目录。
  • --enable-languages: 指定需要支持的语言,这里只安装 C 和 C++ 以节省时间。
  • --disable-multilib: 对于 64 位系统,禁用多库支持可以简化编译过程。

编译与安装

这是最耗时的步骤,根据机器性能,可能需要几十分钟到数小时。

make -j$(nproc)
sudo make install
  • -j$(nproc) 选项会利用所有可用的 CPU 核心进行并行编译,显著加快速度。

配置环境变量

安装完成后,需要将新编译的 GCC 5 的 bin 目录添加到系统的 PATH 中。

echo 'export PATH=/usr/local/gcc5/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

随后,使用 gcc --version 即可验证版本。


两种方法对比

特性 软件集 (SCL) 源码编译
易用性 简单快捷,命令清晰 复杂繁琐,步骤多
安装时间 较快,下载预编译包 漫长,需从零开始编译
系统影响 极低,非侵入式 较高,依赖系统编译器
灵活性 有限,使用预设版本 极高,可完全自定义
维护管理 方便,可通过 Yum 更新 困难,需手动重新编译

相关问答FAQs

安装了多个GCC版本后,如何知道当前正在使用的是哪一个?

解答: 您可以通过两个关键命令来确定当前使用的 GCC 版本和路径,使用 which gcc 命令,它会显示当前 PATH 环境变量中找到的第一个 gcc 可执行文件的完整路径,如果启用了 devtoolset-4,它可能会指向 /opt/rh/devtoolset-4/root/usr/bin/gcc,使用 gcc --version 命令,它会直接输出该编译器的详细版本信息,结合这两条命令的输出,您就可以准确地知道当前生效的是哪个 GCC 版本。

为什么不建议直接用 yum install gcc 来安装或者升级系统默认的 GCC?

解答: 直接使用 yum 更新或安装系统默认仓库中的 GCC 存在很大风险,CentOS(以及其他基于 Red Hat 的发行版)的核心系统组件,如 glibc(C 标准库)、内核模块以及许多系统服务,都是在特定版本的 GCC 编译器下构建和测试的,贸然将系统默认的 GCC 版本升级到一个不兼容的主版本(例如从 4.x 升级到 5.x),可能会导致这些核心组件无法正常工作,从而引发系统不稳定、应用程序崩溃,甚至在最坏的情况下导致系统无法启动,SCL 方法的精髓就在于它通过隔离环境变量,为特定任务提供新版本工具,同时丝毫不影响系统底层的默认工具链,确保了系统的整体稳定性。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-19 09:50
下一篇 2025-10-19 10:02

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信