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脚本的做法,个人感觉更简洁些)。
[root@localhost gcc-build-5.4.0]# find /usr/local/ -name gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/local/libexec/gcc [root@localhost gcc-build-5.4.0]# /usr/local/bin/gcc --version gcc (GCC) 5.4.0 Copyright (C) 2015 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. [root@localhost gcc-build-5.4.0]# /usr/local/bin/g++ --version g++ (GCC) 5.4.0 Copyright (C) 2015 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. [root@localhost gcc-build-5.4.0]#
[root@localhost gcc-build-5.4.0]# mv /usr/bin/g++ /usr/bin/g++.4.8 [root@localhost gcc-build-5.4.0]# mv /usr/bin/gcc /usr/bin/gcc.4.8 [root@localhost gcc-build-5.4.0]# ln -s /usr/local/bin/gcc /usr/bin/gcc [root@localhost gcc-build-5.4.0]# ln -s /usr/local/bin/g++ /usr/bin/g++ [root@localhost gcc-build-5.4.0]# gcc -version gcc: error: unrecognized command line option ‘-version’ gcc: fatal error: no input files compilation terminated. [root@localhost gcc-build-5.4.0]# gcc --version gcc (GCC) 5.4.0 Copyright (C) 2015 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. [root@localhost gcc-build-5.4.0]# g++ --version g++ (GCC) 5.4.0 Copyright (C) 2015 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. [root@localhost gcc-build-5.4.0]#
centots下安装qemu5.1
yum -y install libcap-ng-devel yum -y install librbd*
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