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

如何在RHEL7上将GCC从4.8更新到8.2,gcc,rhel7,Gcc,Rhel7,我希望将我的GCC更新到最新版本(从今天起为8.2版),但是当我尝试使用yum update GCC时,它没有任何新的包要更新。我也没有任何帮助看海湾合作委员会的网站。任何帮助都将不胜感激 Red Hat Enterprise Linux是一种“企业”操作系统,其设计目的是长期保持稳定和相似。这意味着默认情况下,您不会得到“最新和最好的”,而是一个已知的良好实现,它在特定RHEL版本中长期保持默认状态。通常,只有升级RHEL才能获得实质性的软件升级。不幸的是,目前还没有RHEL8 允许您切换到更

我希望将我的GCC更新到最新版本(从今天起为8.2版),但是当我尝试使用
yum update GCC
时,它没有任何新的包要更新。我也没有任何帮助看海湾合作委员会的网站。任何帮助都将不胜感激

Red Hat Enterprise Linux是一种“企业”操作系统,其设计目的是长期保持稳定和相似。这意味着默认情况下,您不会得到“最新和最好的”,而是一个已知的良好实现,它在特定RHEL版本中长期保持默认状态。通常,只有升级RHEL才能获得实质性的软件升级。不幸的是,目前还没有RHEL8

允许您切换到更新的、带外版本的开发软件,如GCC,这样不会“污染”整个操作系统安装。我使用它在CentOS 6上获得了GCC4.8(以及它对C++11的支持),在CentOS 6上官方的GCC4.4版本

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


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

您当然可以自己在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