鯤鵬伺服器升級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