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

时间:2019-01-11 16:38:43

标签: gcc rhel7

我希望将我的GCC更新到最新版本(到今天为止是8.2),但是当我尝试使用class ForumPostResource extends JsonResource { public function toArray($request) { return [ 'id' => $this->id, 'user_id' => $this->user_id, 'thread_id' => $this->thread_id, 'body' => $this->body, 'like_data' => $this->all_likes, 'user_data' => new UserResource($this->user), 'created_at' => $this->created_at, 'updated_at' => $this->updated_at ]; } } 时,它没有任何新软件包可以更新。在查看海湾合作委员会的网站时,我也没有任何帮助。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分: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源码并自行构建(但是!)。

答案 1 :(得分:1)

肯定可以在CentOS上自行构建gcc(尽管如此!)。

通常按照以下步骤操作:

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