如何在 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?