如何在 RHEL7 上将 GCC 从 4.8 更新到 8.2

Posted

技术标签:

【中文标题】如何在 RHEL7 上将 GCC 从 4.8 更新到 8.2【英文标题】:How to update GCC from 4.8 to 8.2 on RHEL7 【发布时间】:2019-06-06 14:52:03 【问题描述】:

我希望将我的 GCC 更新到最新版本(截至今天为 8.2),但是当我尝试使用 yum update gcc 时,它没有任何要更新的新包。我在查看 GCC 的网站时也没有任何帮助。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

一个人肯定可以自己在 CentOS 上构建 gcc(虽然 ew!)。

一般按照以下步骤进行:

sudo yum -y update
sudo yum -y install bzip2 wget gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel make
gcc --version
wget http://mirrors-usa.go-parts.com/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz
tar zxf gcc-8.2.0.tar.gz
mkdir gcc-8.2.0-build
cd gcc-8.2.0-build
../gcc-8.2.0/configure --enable-languages=c,c++ --disable-multilib
make -j 2
sudo make install
gcc --version

此时,很多都看不到8.2,即

gcc version 4.8.5 (GCC)

只需覆盖刚刚构建的旧 gcc,即

# which gcc
/usr/local/bin/gcc
# cp gcc/xgcc /usr/local/bin/gcc
# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/aarch64-unknown-linux-gnu/7.2.0/lto-wrapper
Target: aarch64-unknown-linux-gnu
Configured with: ../gcc-7.2.0/configure --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 7.2.0 (GCC)

为了避免库错误,可能还需要更新libstdc

cp ./aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/local/lib64/libstdc++.so.6
cp ./stage1-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/lib64/libstdc++.so.6

也可以更新libc.so,即2.18

curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr
make -j2
make install
ln -sf /usr/glibc-2.18/glibc-2.18.so /lib64/libc.so.6

最后输入/lib64/libc.so.6进行确认

大多数情况下,ln 会失败,因为旧关系,建议使用 LD,即

LD_LIBRARY_PATH=/usr/glibc-2.18/lib
export LD_LIBRARY_PATH

【讨论】:

【参考方案2】:

Red Hat Enterprise Linux 作为“企业”操作系统,旨在长期保持稳定和相似。这意味着默认情况下您不会获得“最新和最好的”,而是长期保持该特定 RHEL 版本默认的已知良好实现。通常,您只能通过升级 RHEL 来获得大量的软件升级。不幸的是,还没有 RHEL 8。

devtoolset 允许您以不会“污染”整个操作系统安装的方式切换到更新的、带外版本的开发软件(如 GCC)。我用它成功地在 CentOS 6 上获得了 GCC 4.8(及其 C++11 支持),而官方的 GCC 是 4.4。

devtoolset-8 has GCC 8.2.1.

或者您可以选择使用更适合家庭用户的发行版,例如 Fedora。

或者您可以下载 GCC 源代码并自己构建它(但是哎呀!)。

【讨论】:

以上是关于如何在 RHEL7 上将 GCC 从 4.8 更新到 8.2的主要内容,如果未能解决你的问题,请参考以下文章

MinGW:如何在 Windows 上将 GCC/G++ 升级到版本 5?

如何安装gcc-linaro-arm-linux-gnueabihf-4.8-2014.03

Ubuntu1404

静态链接库asan与gcc 4.8

如何在链接服务器上将数据从 mssql 更新到 mysql

如何在 VS2017 上将 ASP.MVC 脚手架从 Bootstrap 3 更新到 Bootstrap 4?