赞
踩
有时候操作系统自带或着 YUM 源安装的 GCC 版本不能满足我们的需求,需要我们自己安装所需的版本。本文给大家分享一下 GCC 升级的操作过程。笔者操作系统是CentOS7.9-x86_64
,YUM 安装的 GCC 版本是4.8.5
,现在要升级到10.4.0
。
Here we go!!! >>>
由于官方GNU网站下载慢,我们改用阿里云,命令如下:
wget https://mirrors.aliyun.com/gnu/gcc/gcc-10.4.0/gcc-10.4.0.tar.gz
附:官网源码下载链接 http://ftp.gnu.org/gnu/gcc/
下载完后,我们解压:
tar -zxvf gcc-10.4.0.tar.gz -C /usr/local/src
进入源码目录:
cd /usr/local/src/gcc-10.4.0/
在 GCC 源码目录下,执行以下命令进行检查安装:
./contrib/download_prerequisites
执行结果:
2023-06-22 23:26:16 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> “./gmp-6.1.0.tar.bz2” [1]
2023-06-22 23:27:39 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> “./mpfr-3.1.6.tar.bz2” [1]
2023-06-22 23:27:49 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> “./mpc-1.0.3.tar.gz” [1]
2023-06-22 23:28:40 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> “./isl-0.18.tar.bz2” [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.
看到这个结果,四个OK就可以了。
执行以下命令:
../configure --prefix=/usr/local/gcc-10.4.0/ --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap --enable-shared \
--enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,lto --enable-plugin \
--enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --disable-multilib
说明:
注意最后使用的是
--disable-multilib
,如果想编译32位的可以使用--enable-multilib
,这样可能会安装很慢。
目录/usr/local/src/gcc-10.4.0/build/
下执行编译命令:
make -j$(nproc)
说明:
- 整个编译过程,根据你的机器配置,可能要等十几分钟到一个小时不等;
- “$(nproc)”为当前服务器每颗物理 CPU 中的核心数,可以根据实际需要填入数值,如:-j4。
安装:
make install -j$(nproc)
建议先卸载原有默认安装的GCC4.8.5,命令如下:
yum -y remove gcc gcc-c++
如果不卸载,需要执行以下命令做个备份:
mv /usr/bin/gcc /usr/bin/gcc485.bak
mv /usr/bin/g++ /usr/bin/g++485.bak
mv /usr/bin/gcov /usr/bin/gcov485.bak
mv /usr/bin/c++ /usr/bin/c++485.bak
mv /usr/bin/cc /usr/bin/cc485.bak
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
使用update-alternatives
来创建软连接:
update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-10.4.0/bin/gcc 100 \
--slave /usr/bin/g++ g++ /usr/local/gcc-10.4.0/bin/g++ \
--slave /usr/bin/gcov gcov /usr/local/gcc-10.4.0/bin/gcov \
--slave /usr/bin/c++ c++ /usr/local/gcc-10.4.0/bin/c++ \
--slave /usr/bin/cc cc /usr/local/gcc-10.4.0/bin/cc \
--slave /usr/lib64/libstdc++.so.6 libstdc++.so /usr/local/gcc-10.4.0/lib64/libstdc++.so.6.0.28
说明:使用“update-alternatives”易于管理多个版本的软连接,可以在多个版本的GCC之间来回切换。
执行以下命令检查一下安装的GCC版本:
gcc --version
结果:
gcc (GCC) 10.4.0
Copyright © 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
可以看出成功升级到 10.4.0 了!
<<< There you go!!!
GCC的升级并不很复杂,要处理好原有GCC,别与新的GCC版本混在一起。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。