我希望将我的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
];
}
}
时,它没有任何新软件包可以更新。在查看海湾合作委员会的网站时,我也没有任何帮助。任何帮助将不胜感激!
答案 0 :(得分:2)
作为“企业”操作系统的Red Hat Enterprise Linux被设计为长期稳定且相似。这意味着默认情况下您不会获得“最新和最好的”信息,但是长期以来,该特定RHEL版本上的默认实现就是一个已知的良好实现。通常,只有通过升级RHEL才能获得实质性的软件升级。不幸的是,还没有RHEL 8。
devtoolset允许您切换到较新的带外版本的开发软件,例如GCC,而不会污染整个操作系统。我用它取得了巨大的成功,在CentOS 6上获得了GCC 4.8(及其C ++ 11支持),官方的GCC是4.4。
或者您可以选择使用更适合家庭用户的发行版,例如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