1. 程式人生 > 實用技巧 >鯤鵬伺服器升級gcc

鯤鵬伺服器升級gcc

https://bbs.huaweicloud.com/forum/thread-22665-1-1.html#

去官網下載http://ftp.gnu.org/gnu/gcc/下載GCC 5.4.0的原始碼壓縮包解壓安裝

解壓gcc-5.4.0.tar.gz



[root@localhost qemu5.1]# mkdir gcc-5.4
[root@localhost qemu5.1]#  tar  -zxvf   gcc-5.4.0.tar.gz    -C  gcc-5.4

下載安裝依賴,下載安裝gcc需要的三個依賴

[root@localhost qemu5.1]#  yum -y install bzip2 wget 

[root@localhost gcc-5.4]# cd gcc-5.4.0/
[root@localhost gcc-5.4.0]# ls
ABOUT-NLS           config        configure.ac  COPYING.RUNTIME  include       libatomic     libffi       libitm         libsanitizer     ltgcc.m4        ltversion.m4        MD5SUMS         README
boehm-gc            config.guess  contrib       depcomp          INSTALL       libbacktrace  libgcc       libjava        libssp           ltmain.sh       MAINTAINERS         missing         symlink-tree
ChangeLog           config
-ml.in COPYING fixincludes install-sh libcc1 libgfortran libmpx libstdc++-v3 lt~obsolete.m4 maintainer-scripts mkdep ylwrap ChangeLog.jit config.rpath COPYING3 gcc intl libcilkrts libgo libobjc libtool-ldflags lto-plugin Makefile.def mkinstalldirs zlib ChangeLog.tree
-ssa config.sub COPYING3.LIB gnattools LAST_UPDATED libcpp libgomp liboffloadmic libtool.m4 ltoptions.m4 Makefile.in move-if-change compile configure COPYING.LIB gotools libada libdecnumber libiberty libquadmath libvtv ltsugar.m4 Makefile.tpl NEWS [root@localhost gcc-5.4.0]# ./contrib/download_prerequisites --2020-12-16 22:49:00-- ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2 => ‘mpfr-2.4.2.tar.bz2’ Resolving gcc.gnu.org (gcc.gnu.org)... 8.43.85.97, 2620:52:3:1:0:246e:9693:128c Connecting to gcc.gnu.org (gcc.gnu.org)|8.43.85.97|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD (1) /pub/gcc/infrastructure ... done. ==> SIZE mpfr-2.4.2.tar.bz2 ... 1077886 ==> PASV ... done. ==> RETR mpfr-2.4.2.tar.bz2 ... done. Length: 1077886 (1.0M) (unauthoritative)

下載編譯所需的依賴包:

這個步驟有兩種方式完成:

a) 如果Linux有網路連線,直接這樣:

cd gcc-4.8.1

./contrib/download_prerequisites

cd ..

b) 如果Linux沒有網路連線(我主機和虛擬機器是Host-only,不能聯網,所以另外想辦法),則用Windows上網下載這幾個包:

ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz

有人問,一定要下載幾個版本嗎?下載最新的版本行不行?我沒試過,也不知道,我是按照gcc-4.8.1/contrib/download_prerequisites腳本里面的版本下載的。既然裡面已經說了這幾個版本,那我就嚴格按照它的要求來做。

然後解壓並移動到gcc-4.8.1下面:

tar -xjf gmp-4.3.2.tar.bz2

tar -xjf mpfr-2.4.2.tar.bz2

tar -xzf mpc-0.8.1.tar.gz

mv gmp-4.3.2 gcc-4.8.1/gmp

mv mpfr-2.4.2 gcc-4.8.1/mpfr

mv mpc-0.8.1 gcc-4.8.1/mpc

這樣的做法好處是,不用單獨編譯gmp、mpfr和mpc三個包,放在gcc原始碼下面一起編譯(事實上這也是gcc-4.8.1/contrib/download_prerequisites指令碼的做法,個人感覺更簡潔些)。

1.簡介

GCC 編譯器是 Linux 下預設的 C/C++ 編譯器,大部分 Linux 發行版中都是預設安裝的。鯤鵬伺服器CentOS7.5中預設GCC版本為4.8.5,很多情況下需要升級。本指南描述了GCC升級到5.4.0的過程,可供相關人士參考。

類別:編譯器

2.部署環境

Packet Name

Version

CentOS

CentOS 7.5 with ARM

GCC

5.4.0

7.3.0

3.安裝部署

3.1編譯升級GCC

由於伺服器Centos7.5預設安裝的GCC版本較低,在某些場景下需要進行升級GCC,版本資訊如下:

[root@ecs-arm-felix-free01 ~]# gcc --version

gcc (GCC) 4.8.5

去官網下載http://ftp.gnu.org/gnu/gcc/下載GCC 5.4.0的原始碼壓縮包解壓安裝

解壓gcc-5.4.0.tar.gz

[root@ecs-arm-felix-free01 ~]# tar -xvf gcc-5.4.0.tar.gz

下載安裝依賴,下載安裝gcc需要的三個依賴

[root@ecs-arm-felix-free01 ~]# yum -y install bzip2 wget # 下載依賴需要使用把bzip2和wget兩個命令

[root@ecs-arm-felix-free01 ~]# cd gcc-5.4.0/

[root@ecs-arm-felix-free01 ~]# ./contrib/download_prerequisites # 在解壓根目錄中執行

依賴下載完成後,編譯更新gcc版本

[root@ecs-arm-felix-free01 ~]# cd ../ && mkdir gcc-build-5.4.0 && cd gcc-build-5.4.0 #執行命令前位於gcc-5.4.0目錄下

# 執行configure

[root@ecs-arm-felix-free01 ~]# ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

# 執行編譯,make時間1-2小時或更久

[root@ecs-arm-felix-free01 ~]# make -j8 #-j8意味8核並行編譯;

[root@ecs-arm-felix-free01 ~]# make install #執行安裝

備註:如果執行過程遇到configure: error: C++ preprocessor "/lib/cpp" fails sanity check,執行

[root@ecs-arm-felix-free01 ~]# yum install glibc-headers

[root@ecs-arm-felix-free01 ~]# yum install gcc-c++

驗證是否更新生效

[root@ecs-arm-felix-free01 ~]# gcc -version

gcc (GCC) 5.4.0

生成的動態庫替換老版本gcc的動態庫。

[root@ecs-arm-felix-free01 ~]# cp /usr/local/lib64/libstdc++.so.6.0.21 /lib64

[root@ecs-arm-felix-free01 ~]# cd /lib64 & cp libstdc++.so.6 libstdc++.so.6.old

[root@ecs-arm-felix-free01 ~]# ln -s libstdc++.so.6.0.21 libstdc++.so.6

#執行命令檢視最新GLIBCXX_3.4.21

[root@ecs-arm-felix-free01 ~]# strings /lib64/libstdc++.so.6 | grep GLIBC

3.2 參考資訊


[1] GCC升級版本:https://www.linuxidc.com/Linux/2018-11/155395.htm