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

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

【问题讨论】:

    标签: gcc rhel7


    【解决方案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 源代码并自己构建它(但是哎呀!)。

      【讨论】:

        猜你喜欢
        • 2017-05-01
        • 1970-01-01
        • 2018-10-11
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        相关资源
        最近更新 更多