CentOS 7下手动编译安装GCC 7.5.X编译器

1、安装依赖环境

bash 复制代码
sudo yum groupinstall "Development Tools"
sudo yum install -y glibc-devel gmp-devel mpfr-devel libmpc-devel \
    bzip2 wget texinfo

2、下载GCC 7.5源码

bash 复制代码
wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
tar xvf gcc-7.5.0.tar.xz
cd gcc-7.5.0

3、下载依赖项(GCC源)

bash 复制代码
./contrib/download_prerequisites

4、 配置编译环境(推荐新建目录)


bash 复制代码
mkdir build && cd build
../configure \
    --prefix=/usr/local/gcc-7.5 \
    --enable-languages=c,c++ \
    --disable-multilib \
    --with-system-zlib

--prefix:指定安装路径(避免覆盖系统默认GCC)

--enable-languages:选择需要编译的语言

--disable-multilib:禁用多架构支持(如仅需64位)

5、编译安装(耗时较长)

bash 复制代码
sudo make -j$(nproc)        # 使用所有CPU核心加速编译
sudo make install           # 安装到指定目录

6、配置环境变量

bash 复制代码
# 临时生效
export PATH=/usr/local/gcc-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gcc-7.5/lib64:$LD_LIBRARY_PATH

# 永久生效(写入 ~/.bashrc 或 /etc/profile)
echo 'export PATH=/usr/local/gcc-7.5/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-7.5/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

7、验证安装

bash 复制代码
gcc --version               # 应显示7.5.0
g++ -std=c++14 -dM -E -x c++ /dev/null | grep -F __cplusplus
# 输出应为:201402L(C++14支持)

可选操作:创建符号链接(软连接)

bash 复制代码
sudo ln -sf /usr/local/gcc-7.5/bin/g++ /usr/local/bin/g++7
sudo ln -sf /usr/local/gcc-7.5/bin/gcc /usr/local/bin/gcc7

常见问题解决

1、编译失败

确保所有依赖已安装

清理后重试:make distclean

2、动态库未找到

运行 sudo ldconfig

兼容性问题

通过绝对路径使用新GCC(如 /usr/local/gcc-7.5/bin/g++)

替代方案:使用SCL(更简单)

如果允许使用第三方仓库,可通过 Developer Toolset 快速安装:

bash 复制代码
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash

优先考虑SCL方案,手动编译适用于需要完全控制编译选项的场景,及无法使用SCL的情况。

相关推荐
wanhengidc1 小时前
当云手机出现卡顿怎么办?
运维·服务器·安全·智能手机
七七&5566 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤6 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
寻道模式6 小时前
【运维心得】三步10分钟拆装笔记本键盘
运维·计算机外设·笔记本
元清加油6 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
健康平安的活着6 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
No0d1es6 小时前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级
焄塰7 小时前
Ansible 管理变量和事实
学习·centos·ansible
炫友呀7 小时前
Centos 更新/修改宝塔版本
linux·运维·centos
闻道且行之7 小时前
嵌入式|VNC实现开发板远程Debian桌面
运维·debian·嵌入式