系统:麒麟桌面版,arrch64架构

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_g++


源g++版本:5.4.0,如下:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_g++_02


通过apt-get安装的g++版本最高就是5,用此版本编译我们的程序release模式可以编译,但debug模式就会报错(如下图),这边没有被这问题解决掉,于是尝试升级g++。

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_03

升级g++

首先,查看官网的文档

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_配置文件_04

从中,我们可以得出以下关注点:

1

1.Before starting the build/install procedure please check the host/target specific installation notes在开始安装之前读说明,点击链接进去,找到对应的架构,再点击进去,如我的是aarch64,看起来没有什么需要特别注意的地方,如下图:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_配置文件_05

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_06

2

2.安装的过程分五步,分别是前提条件、下载源码、配置、构建、测试、完成安装,可以通过点击链接进去查看详细的内容

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_07

3.

3.下面我们逐步来操作

①在前提条件里介绍的是构建和修改GCC所需要的工具包,这里水平有限就展开介绍了,感兴趣的可以执行查看文档,这里奉上链接:构建和修改GCC所需要的工具包,点击即可跳转

②下载源码,这里是镜像地址,https://gcc.gnu.org/mirrors.html,点击即可跳转,看来一下没有国内的,懒得找国内源了

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_g++_08

这边直接选了一个镜像进行下载,点击镜像链接→点击releases/→点击要下载的gcc版本(这里我简单选的是gcc-8.5.0),点击链接进去,即可看到源码包了,复制一下链接,然后在终端里面用wget下载即可,特别慢,建议空闲的时候下载(也可以找找国内源,这样速度要快点)

wget https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-8.5.0/gcc-8.5.0.tar.gz

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_09

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_源码包_10

③配置,这里选择默认配置,即configure不加其他参数,这里奉上配置选项参数的链接,感兴趣的自行查看。解压gcc的源码包,去到gcc目录下,执行configure,如下:

tar zvxf gcc-8.5.0.tar.gz
cd gcc-8.5.0/
./configure

执行configure的时候报错,如下图:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_11

这里提示缺少GMP 4.2+,MPFR 2.4.0+ 和 MPC 0.8.0+(+号代表是以上版本,即更高的版本)

还给出了这些包的下载链接https://gcc.gnu.org/pub/gcc/infrastructure/,这边进去链接,可以看到GMP、MPFR和MPC的包,复制对应的链接,使用wget下载,如下:

wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_编译_12


下载完毕,接下来就是解压并安装这三个包,顺序是GMP→MPFT→MPC

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_13


解压并安装的命令,注意tab.bz2包要用jxvf选项,tar.gz用zxvf选项,如下:

tar jxvf xxx.tar.bz2
tar zxvf xxx.tar.gz
cd src_dir
./configure
make
sudo make install

安装GMP、MPFT、MPC完毕之后,继续安装GCC,去到GCC的目录下,执行configure,结果还是报错了,默默地来了去去她丫的,错误信息如下:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_源码包_14


未完待续,上个厕所先…

继续…
经检查,好像这边漏了make这一步骤(不太确定),执行make clean,然后再来一遍

make clean

./configure
make
sudo make install

执行make的时间会比较长,这个时候可以去干点别的事,等它自己跑完再执行sudo make install,如下:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_g++_15

make还是报错,错误信息如下:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_配置文件_16

找了一下这包libmpfr.so.6(注意区分链接文件和原文件),是有的。对于这情况,尝试将libmpfr.so.6.1.0分别拷贝到/usr/lib/和/usr/lib/aarch64-linux-gnu/并重命名为libmpfr.so.6

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_源码包_17

补充

对于编译时报错:g++: error: unrecognized command line option “-m64”

问题实则不在于g++的版本,而是在于-m64这选项。在Makefile去掉该选项,但请注意这里有个坑,这边是用NetBeans写的项目,然后编译配置文件在nbproject目录下,而Makefile在上一级目录,这边是在Makefile里找老半天都没找着-m64字样,实际上-m64选项是在NetBeans的编写配置文件Makefile-Debug.mk(Debug是配置名,模式是Debug),在CC Compiler Flags配置项,将CCFLAGS和CXXFLAGS的值-m64删除,编译即可通过,如下图:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_编译_18

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_gcc_19


centOS升级麒麟需要boot空间多少 麒麟系统如何升级_编译_20


另外,在NetBeans里点击编译还是会报错g++: error: unrecognized command line option “-m64”,需要将NetBeans里的Debug配置项C++编译器的基本选项→体系结构更改64位为默认即可。在NetBeans上重新编译,编译通过。附录:

我另外一台设备(ubuntu18.04)上gcc的编译选项,如下图:

centOS升级麒麟需要boot空间多少 麒麟系统如何升级_配置文件_21