• [内容拦截申诉] 基于gcc实现源代码预处理、编译等过程
    https://bbs.huaweicloud.com/forum/thread-50175-1-1.html帖子拦截是什么原因?
  • 鲲鹏(ARM64) GCC 9.1.0 CentOS 7.6移植指南
    1 GCC简介GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC),指一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,也是GNU工具链的主要组成部分之一。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。1985年由理查德·马修·斯托曼开始发展,现在由自由软件基金会负责维护工作。原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC在发布后很快地得到扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada,Go与其他语言。许多操作系统,包括许多类Unix系统,如Linux及BSD家族都采用GCC作为标准编译器。       2 配置编译环境2.1 安装依赖yum install bzip2 -y yum install gcc gcc-c++ -y ----结束3 编译依赖库3.1 编译gmp 6.1.2gmp下载链接:http://ftp.gnu.org/gnu/gmp/安装gmpwget https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2tar -jxf gmp-6.1.2.tar.bz2cd gmp-6.1.2./configure --prefix=/usr/local/gmp-6.1.2make -j4make install3.2 编译mpfr 4.0.2mpfr下载链接:https://ftp.gnu.org/gnu/mpfr/安装mpfrwget https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.gztar -zxf mpfr-4.0.2.tar.gzcd mpfr-4.0.2./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2makemake install3.3 编译mpc 1.1.0mpc下载链接:https://ftp.gnu.org/gnu/mpc/安装mpcwget https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gztar -zxf mpc-1.1.0.tar.gzcd mpc-1.1.0./configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2makemake install 4 编译GCC 9.1.0                                步骤 1      设置环境变量:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.1.0/lib:/usr/local/gmp-6.1.2/lib:/usr/local/mpfr-4.0.2/lib                                步骤 2      下载源码编译:wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.1.0/gcc-9.1.0.tar.gztar -xzf gcc-9.1.0.tar.gzcd gcc-9.1.0./configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --with-mpc=/usr/local/mpc-1.1.0 --prefix=/usr/local/gcc-9.1.0make -j64make install                                步骤 3      确认版本生效:gcc -v  ----结束 5 参考更多信息请参见GCC官网:https://gcc.gnu.org/。
  • [交流分享] GCC编译常见问题汇总【鲲鹏920(ARM64)】
    概述当前ISV应用所依赖的编译工具、开发工具,第三方中间件和软件等,大多都是基于X86提供。第三方开源软件工具等开发语言大致分为两类:编译型语言:典型的如C/C++/Go语言,都属于编译型语言。编译型语言开发的程序在从x86处理器迁移到鲲鹏处理器时,必须经过重新编译才能运行。解释型语言:典型的如Java/Python语言,都属于解释型语言,解释型语言开发的程序在迁移到鲲鹏处理器时,一般不需要重新编译。解释型语言的源代码由编译器生成字节码,然后再由虚拟机解释执行。比如基于java的,只需要平台安装了jvm即可。 本文档主要描述基于编译型语言C/C++的第三方开源软件使用aarch64-linux-gcc编译器编译出针对鲲鹏arm64平台的可执行代码过程中常见问题汇总。      1 编译过程1.1 本地gcc编译1.1.1 编译过程介绍                                               一、基本信息  1、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。  2、make 是用来编译的,它从Makefile中读取指令,然后编译。3、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。二、详细解释1、configure命令这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure --prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 –with --enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。2、make这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。可能遇到的错误:make *** 没有指明目标并且找不到 makefile。问题很明了,没有Makefile,怎么办,原来是要先./configure 一下,再make。3、make insatll这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。4、说明在Linux下编译安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean删除一些临时文件。运行configure脚本,就可以生成Makefile文件,然后就可以运行make、make install和make clean。configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。到此时,就可以运行make进行编译,在运行make install进行安装了,最后运行make clean删除临时文件。$ make$ make install           (注:运行这个要有足够的权限)$ make clean利用configure所产生的Makefile文件有几个预设的目标可供使用,其中几个重要的简述如下:make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译make –j [N]:make是编译的执行,指定此参数使用多核CPU并行编译的方式加快编译速度,可以使用cpu核数的一倍指定此参数值,CPU核数获取命令[cat /proc/cpuinfo | grep "processor" | wc -l],比如获取到的核数为16 ,可以指定编译参数:make -j 161.1.2 使用GCC编译应用I. 环境准备编译安装可能会依赖一些其他软件或者库等,我们需要提前配置好yum源,如果编译环境不能连公网的情况下,需要配置本地yum源;本地yum源配置上传操作系统ISO文件至编译环境,测试使用CentOS 7.5 aarch64版本环境,上传 CentOS-7-aarch64-Everything-1804.iso至操作系统/opt目录下mount /opt/CentOS-7-aarch64-Everything-1804.iso /media/ -o loop修改yum配置文件mv /etc/yum.repos.d   /etc/yum.repos.d.bakmkdir /etc/yum.repos.dtouch /etc/yum.repos.d/local.repochmod 644   /etc/yum.repos.d/local.repoecho   "[base-local]" >> /etc/yum.repos.d/local.repoecho   "name=$name" >> /etc/yum.repos.d/local.repoecho   "baseurl=file:///media" >> /etc/yum.repos.d/local.repoecho   "enabled=1" >> /etc/yum.repos.d/local.repoecho   "gpgcheck=0" >> /etc/yum.repos.d/local.repoyum clean allyum makecacheII. 下载源码包下载源码包xx_src_3.6.tar.gz上传至/opt目录,然后解压源码包tar –zxvf xx_src_3.6.tar.gz进入到解压目录。III. 生成makefile执行./configure,检查环境并生成makefile。常见问题:■有些源码文件默认不带configure文件,应该参考软件官网具体的配置步骤,常见处理方法如:1、目录下是否有autogen文件,可以执行./autogen.sh生成configure文件。2、使用cmake –G “Unix Makefies” 生成Makefile文件。■根据错误提示,确认软件缺少的一些依赖。如:【The C compiler identification is unknown.】,系统缺少gcc;【configure: error: --with-readline=yes (default) and headers/libs are not available】系统缺少readline。需要先安装这些依赖如:yum install –y gcc gcc-c++yum install -y readline-devel■无法猜测构建类型,有些包默认并不支持aarch64的系统,需要指定参数,或者修改config.guess文件方式,如:1、./configure –build=aarch64-linux2、修改源码中config.guess,添加如下代码(视具体情况,可以查看此文件,对于alpha,amd64,x86_64的设置参考修改)      aarch64:Linux:*:*)       echo   "$UNAME_MACHINE"-unknown-linux-"$LIBC"       exit   ;;      aarch64_be:Linux:*:*)       UNAME_MACHINE=aarch64_be       echo   "$UNAME_MACHINE"-unknown-linux-"$LIBC"       exit   ;;IV. 编译安装执行make –j 16make install完成编译安装。2 编译常见问题2.1 The C compiler identification is unknown.问题现象:       The C compiler identification is unknown.       The CXX compiler identification is unknown.解决方案:缺少交叉编译软件解决办法:       yum install gcc gcc-c++2.2 cannot remove 'libtoolT'问题解决问题现象:在使用./configure && make && make install 的时候,报错不能移除libtoolT,因为系统没有安装libtool 解决方案:安装libtool后重新编译操作步骤:yum install libtool -y2.3 yum-config-manager: command not found问题解决问题现象:yum-config-manager: command not found解决方案:系统没有安装yum附加工具包,安装yum附加工具包操作步骤:yum -y install yum-utils2.4 启动运行默认缓存不足问题解决问题现象:nginx: [crit] ngx_slab_alloc() failed: no memory         nginx: [emerg] http upstream check_shm_size is too small, you should specify a larger size.问题原因:检查后端服务器健康检查状态配置太多,导致默认缓存1M不够用。解决方案:增加默认缓存操作步骤:在“nginx.conf”的http块中增加一条配置,设置缓存大小,check_shm_size  50m2.5 执行编译时找不到configure文件问题解决问题现象: 执行编译时找不到configure文件,./configure 无效解决方案:如果目录下有autogen.sh文件,则使用此文件产生configure文件操作步骤: 使用./ autogen.sh执行该脚本解决方案:如果目录下无autogen.sh文件,采用cmake -G "Unix Makefiles"命令,生成标准的UNIX makefile操作步骤: 执行命令cmake -G "Unix Makefiles"2.6 无法猜测构建类型问题解决问题现象: Configure:error:cannot guess build type; you must specify one解决方案:在configure执行时指定构建类型操作步骤: 1、在./configure时加入 “--build=arm-linux --host=arm-linux”即可解决。如./configure --build=arm-linux --host=arm-linux2、修改config.guess或者gnu-os文件方式,添加如下代码(视具体情况,可以查看此文件,对于alpha,amd64,x86_64的设置参考修改)      aarch64:Linux:*:*)       echo   "$UNAME_MACHINE"-unknown-linux-"$LIBC"       exit   ;;      aarch64_be:Linux:*:*)       UNAME_MACHINE=aarch64_be       echo   "$UNAME_MACHINE"-unknown-linux-"$LIBC"       exit   ;;2.7 文件句柄配置过小问题解决问题现象: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]解决方案: 修改系统当前支持的文件句柄为65536(系统默认为65535,可用ulimit -n查询,elasticsearch要求最低为65536)操作步骤: 1. 编辑/etc/security/limits.conf,追加以下内容:              * soft nofile 65536        * hard nofile 65536         2. 修改参数,保存后重启云服务器生效2.8 内存映射大小配置问题解决问题现象:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]解决方案:修改单进程最多可用于内存映射区大小为262145(elasticsearch要求最小为262144)。操作步骤: 1. 编辑 /etc/sysctl.conf,追加以下内容:vm.max_map_count=2621452. 保存后,执行:sysctl –p2.9 configure: error: --with-readline=yes (default) and headers/libs are not available问题现象:有明显报错信息有报错解决方案:有些参数默认会报错,但去掉对编译没有影响,可以去掉后试一下解决办法:1.configure的带参数配置:./configure --with-readline=no2.提前安装,或者centos系统:安装readline:yum install readline-devel2.10 configure: error: --with-x=yes (default) and X11 headers/libs are not available问题现象:configure: error: --with-x=yes (default) and X11 headers/libs are not available解决方案:有些参数默认会报错,但去掉对编译没有影响,可以去掉后试一下解决办法:       设置参数 --with-x=no,或者       yum install libX11-devel        yum install libXt-devel2.11 configure: error: "liblzma library and headers are required"问题现象:configure: error: "liblzma library and headers are required"解决方案:缺少某些依赖,但是有些依赖无法通过yum源来进行安装,所以需要下载源码编译安装解决办法:       从官网下载相关依赖源码包,提前编译源码           wget https://tukaani.org/xz/xz-5.2.4.tar.gz           tar -zxvf xz-5.2.4.tar.gz           cd xz-5.2.4/           ./configure           make           make install2.12 checking whether PCRE support suffices... configure: error: pcre >= 8.20 library and headers are required问题现象:checking whether PCRE support suffices... configure: error: pcre >= 8.20 library and headers are required解决方案:当前版本不够,需要升级,yum安装一般是低版本,所以,如果出现版本过低,需要下载最新的版本,通过源码安装。解决办法:wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gztar -zxvf pcre-8.42.tar.gzcd pcre-8.42.tar.gz./configuremakemake install 2.13 configure: error: libcurl >= 7.22.0 library and headers are required with support for https问题现象:configure: error: libcurl >= 7.22.0 library and headers are required with support for https,curl版本过低解决方案:升级curl版本解决办法:wget https://curl.haxx.se/download/curl-7.61.0.tar.gztar -zxvf curl-7.61.0.tar.gzcd curl-7.61.0/./configuremakemake install2.14 /lib64/libstdc++.so.6: version `GLIBCXX_x.x.xx' not found问题现象:glibc版本过低解决方案:内核某些相关组件版本过低,比如GLIBC,需要升级,如果升级后还是报错,原因的是历史版本也会存在,但不会自动切换为新版本,我们需要手动切换。查询当前内核版本,是否有错误提示没有找到的版本,如果没有则需要安装,如果有,ls -i查看软链接位置,链接到新的版本。解决办法:       strings /lib64/libstdc++.so.6 | grep GLIBC确认是否包含GLIBCXX_ x.x.xx       cd /lib64       rm -rf libstdc++.so.6       ln -s libstdc++.so.6.0.22 libstdc++.so.6 
  • 凝思OS gfortran 编译器 编译安装(gcc8.3)
       安装环境类别子项版本获取地址(方法) 硬件CPUHi1616--网络Eth-10GE--存储SATA/SSD--内存64G 2666MHz--OS凝思6.0.90--Kernel4.19.0--软件GCC8.3.0https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz  GMP6.1.0https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2ISL0.18https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2MPC1.0.3https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gzMPFR3.1.4https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2安装凝思OS      安装时注意选择开发环境    下载gcc8.3源码gcc 8.3下载地址https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gzhttps://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz下载解压#tar -xvf gcc-8.3.0.tar.gz  依赖包下载安装运行 gcc-8.3.0/contrib/download_prerequisites 脚本下载如下依赖gmp6.1.0、isl0.18、mpc1.0.3、mpfr3.1.4如果因为通过proxy导致下载失败,可手动下载后放到 gcc-8.3.0目录下gmp6.1.0、isl0.18、mpc1.0.3、mpfr3.1.4下载地址:https://gcc.gnu.org/pub/gcc/infrastructure/下载的gmp-6.1.0.tar.bz2、isl-0.16.1.tar.bz2、mpc-1.0.3.tar.gz、mpfr-3.1.4.tar.bz2包如下:进入 gcc-8.3.0目录中:wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gzwget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2将安装包放于解压后的gcc-8.3.0目录下1. 注釋掉gcc-8.3.0/contrib/download_prerequisites文件的218~225行2. 在gcc-8.3.0目录下,执行命令./contrib/download_prerequisites2       编译安装进入gcc-8.3.0目录mkdir gcc83builddircd gcc83builddir../configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-language=c,c++,fortran --disable-multilib    make -j 64make install支持c,c++,fortran3       环境变量设置vim /etc/profile加入:  export export PATH=/usr/local/gcc-8.3.0/bin:$PATH  export LD_LIBRARY_PATH=/usr/local/gcc-8.3.0/lib64:$LD_LIBRARY_PATHsource一下source /etc/profile4       验证执行gcc -v   b.gfortran -v简单测试验证:vim hellof90.f90输入如下内容:program mainwrite(*,*) "hello fortran world."end program main 编译执行:gfortran hellof90.f90 -o hellof90./hellof90  
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第114期 Gcc-7.30安装配置指南
    1、简介gcc for linux(gcc编译器)是一款针对linux系统而开发的编译器软件。gcc for linux对自由软件类 Unix操作系统和一些所有权操作系统。Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。官方链接:http://tsung.erlang-projects.org/类别:工具&插件2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.5Kernel4.14软件包Gcc7.3.0https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz 3、依赖安装yum install -y wget gcc4、组件编译安装  下载源码包cd /optwget https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xztar –xf gcc-7.3.0.tar.xz  下载安装依赖进入解压好的目录,并执行以下命令下载安装依赖(时间稍长,耐心等待)cd gcc-7.3.0./contrib/download_prerequisites    编译:创建编译目录cd /usr/localmkdir gcc-build-7.3.0cd gcc-build-7.3.0/opt/gcc-7.3.0/configuremake –j8   (添加-j8,否则编译时间太长) make install 5、系统配置    无6、测试查看版本信息gcc -v 7、参考信息无  8、FAQQ:下载依赖包报错 A:原因分析:未发现GMP、MPFR和MPC tar下载包的解压目录解决方法:删除下载的四个tar包,重新执行./contrib/download_prerequisites
  • [C/C++] 【华为云鲲鹏云服务最佳实践】【语言篇】第015期 gcc-8.3.0安装配置指南
    1、简介gcc是GNU编译器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。 类别:语言2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.6Kernel4.14软件包 Gcc8.3.0http://mirror.hust.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz3、依赖安装 安装依赖包# yum install -y gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel4、组件编译安装获取gcc-8.3.0发布包,并解压# wget http://mirror.hust.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz# tar -xf gcc-8.3.0.tar.gz编译安装# cd gcc-8.3.0# ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --prefix=/usr/local/gcc-8.3.0#nohup make &# make install# cp /usr/local/gcc-8.3.0/lib64/libstdc++.so.6.0.25 /usr/lib64/# ln -sf libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6# ln -sf gcc /usr/local/gcc-8.3.0/bin/cc配置环境变量# export PATH_BAK=$PATH# export PATH=/usr/local/gcc-8.3.0/bin/:$PATH5、系统配置  无6、测试检查gcc是否安装成功# gcc --version显示如下信息说明成功:7、参考信息 无8、FAQ无
  • KUNPENG平台Gcc9.1.0移植自动安装脚本
    1 Gcc简介GUN Compiler Collection简称GCC,它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,一是支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),二是支持交叉编译(即在A平台上编译的程序是供平台B使用的)。GCC支持的体系结构有四十余种,常见的有X86系列、Arm、PowerPC等。当前文档是文档适用于Arm-CentOS-7.5-64bit。2 环境信息2.1 环境信息类别子项版本获取地址OSCentOS7.5 Aarch64href="https://www.centos.org/download/" https://www.centos.org/download/服务器配置16U16GB40GB软件GCC9.1.0https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.xz3 软件移植3.1 环境准备OS安装类型:CentOS-7.5-aarch64-1804。 注:操作系统安装使用最小简化版安装(如上图),其余步骤安装一般安装操作系统步骤即可。 3.1.1 相关软件下载上传1、 上传CentOS 7.5系统ISO镜像文件至服务器2、 上传gcc-9.1.0.tar.xz源码包至服务器目录下下载地址:https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.xz 3.2 安装Gcc    1、 安装gcc软件        a. 上传自动安装脚本至服务器,如/opt目录下        (gcc_install.sh)        b. 执行如下命令添加执行权限:        chmod +x /opt/gcc_install.sh        c. 执行如下命令安装gcc9.1.0        sh /opt/gcc_install.sh        d. 提示gcc install seccess!表示安装成功4 软件运行4.1 验证执行安装完成后执行:gcc –v,如下则表示安装成功   5 参考信息https://developer.arm.com/tools-and-software/server-and-hpc/arm-architecture-tools/resources/porting-and-tuning/building-blast-with-arm-compiler/single-page
  • KUNPENG平台Gcc7.3移植自动安装脚本
    1 Gcc简介GUN Compiler Collection简称GCC,它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,一是支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),二是支持交叉编译(即在A平台上编译的程序是供平台B使用的)。GCC支持的体系结构有四十余种,常见的有X86系列、Arm、PowerPC等。当前文档是文档适用于Arm-CentOS-7.5-64bit。2 环境信息2.1 环境信息类别子项版本获取地址OSCentOS7.5 Aarch64href="https://www.centos.org/download/" https://www.centos.org/download/服务器配置16U16GB50GB软件GCC7.3 https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz3 软件移植3.1 环境准备:OS安装类型:CentOS-7.5-aarch64-1804。 注:操作系统安装使用最小简化版安装(如上图),其余步骤安装一般安装操作系统步骤即可。 3.1.1 相关软件下载上传:1、 上传CentOS 7.5系统ISO镜像文件至服务器2、 上传gcc-7.3.0.tar.gz源码包至服务器目录下下载地址:https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 3.2 安装Gcc 1、 如果当前服务器不能访问外网,请先配置本地yum源。    a. 上传以下脚本至要安装ActiveMQ的服务器上的任意目录,如/opt。(local_yum_install.sh)    b. 执行如下命令添加执行权限:    chmod +x /opt/local_yum_install.sh    c. 执行如下命令安装配置本地yum源    sh /opt/local_yum_install.sh2、 安装gcc软件    a. 上传自动安装脚本至服务器,如/opt目录下 (gcc_install.sh)    b. 执行如下命令添加执行权限:    chmod +x /opt/gcc_install.sh    c. 执行如下命令安装gcc7.3    sh /opt/gcc_install.sh    d. 提示gcc install seccess!表示安装成功4 软件运行4.1 验证执行安装完成后执行:gcc –v,如下则表示安装成功   5 参考信息https://developer.arm.com/tools-and-software/server-and-hpc/arm-architecture-tools/resources/porting-and-tuning/building-blast-with-arm-compiler/single-page6 FAQ 
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第027期Gcc-8.3.1安装配置指南
    1、简介gcc是GNU编译器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。 类别:工具2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.7.1908Kernel4.18.0软件包 Gcc8.3.1 https://koji.fedoraproject.org/koji/buildinfo?buildID=13940003、组件编译安装下载Gcc9.1.0源码包并解压wget https://kojipkgs.fedoraproject.org//packages/gcc/8.3.1/5.fc29/src/gcc-8.3.1-5.fc29.src.rpm安装rpm源码包,安装后在 ~/rpmbuild 目录下rpm -ivh gcc-8.3.1-5.fc29.src.rpm安装依赖yum install -y yum install -y glibc-static zlib-devel gettext bison flex sharutils texinfo texinfo-tex systemtap-sdt-devel gmp-devel mpfr-devel libmpc-devel python2-devel python3-devel gcc-c++ elfutils-devel gcc-gnat doxygen graphviz texlive-collection-latex python-sphinx docbook5-style-xsl dblatex 解决 dejagnu,isl,isl-devel依赖wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/aarch64/os/Packages/d/dejagnu-1.6.1-4.fc29.noarch.rpmrpm -ivh dejagnu-1.6.1-4.fc29.noarch.rpmwget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/aarch64/os/Packages/i/isl-0.16.1-7.fc29.aarch64.rpmrpm -ivh isl-0.16.1-7.fc29.aarch64.rpmwget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/aarch64/os/Packages/i/isl-devel-0.16.1-7.fc29.aarch64.rpmrpm -ivh isl-devel-0.16.1-7.fc29.aarch64.rpm 编译rpmbuild -bb ~/rpmbuild/SPECS/gcc.spec 编译结果在 ~/rpmbuild/RPMS/ 目录下  5、系统配置    无6、测试安装#!/bin/bashREPO_PATH="/root/rpmbuild/RPMS/"yum install -y createrepoif [ $? -ne 0 ]; then    echo "Failed to install createrepo"    exit -1;ficreaterepo ${REPO_PATH}if [ $? -ne 0 ]; then    echo "Failed to run createrepo"    exit -1;ficat <<EOF > /etc/yum.repos.d/gcc8.3.1.repo[gcc8.3.1]name=gcc831baseurl=file://${REPO_PATH}enabled=1gpgcheck=0EOFyum repolistyum -y remove gcc gcc-c++yum -y install --enablerepo gcc8.3.1 gcc gcc-c++gcc --version  7、参考信息 无8、FAQ         无
  • [技术干货] 基于LiteOS_Lab工程的SW4STM32(AC6)GCC开发环境搭建
    摘要:本文主要基于LiteOS_Lab的开发,在在SW4STM32环境下对于STM32F429IGTx野火开发板的适配工作,希望对你有所帮助。1 环境准备参考网址:https://github.com/LiteOS/LiteOS_Lab/blob/iot_link/doc/Huawei_IoT_Link_SDK_IDE_Eclipse_Guide.md1.1 安装GCC编译器首先需要安装GCC编译器” GNU Arm Embedded Toolchain”,安装完毕务必将添加环境变量“Add path to environment variable”勾选上。 下载地址: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads1.2 安装jdk运行环境安装好jdk后,新建环境变量,并添加path路径。安装后可以windows+R,输入cmd进入terminal,输入java -version,查看版本以及安装成功与否。下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html1.3 安装make工具Make 工具用于build 工程,使用Makefile 编译工程。也可根据需要自行安装所需版本。版本:gnu-mcu-eclipse-build-tools-2.9-20170629-1013-win64-setup.exe下载地址: https://github.com/gnu-mcu-eclipse/windows-build-tools/releases/tag/v2.9-20170629-10131.4 安装Jlink 驱动程序版本:JLink_Windows_V632e.exe  下载地址如下:https://www.segger.com/downloads/jlink/#JLinkSoftwareAndDocumentationPack 1.5 安装Eclipse IDE 环境下载地址: https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases将下载的eclipse 直接解压即可完成安装。解压后,打开eclipse 目录,如图双击eclipse.exe 即可运行IDE 环境,建议将该应用程序创建桌面快捷方式,这样方便后续直接在桌面打开IDE环境。1.6 安装AC6环境下载最新版本v2.9,即可直接官网https://www.ac6-tools.com/downloads/SW4STM32/install_sw4stm32_win_32bits-v2.9.exe2 获取LiteOS源码下载LiteOS最新源码,并解压到指定文件夹。下载地址:https://github.com/LiteOS/LiteOS_Lab3工程创建与配置31创建工程在软件中,点击File → New → C project,开始创建工程,具体如下所示。图1自定义工程名字,选择创建空项目,以及Ac6 STM32 MCU GCC。图2之后选择开发板,选择对应系列到具体开发板,具体如下所示,可以看到同一系列的一类开发板。图3如果找不到,点击新建开发板。本文使用的是STM32F429IGTx的野火开发板,采用创建新开发板方式。 图4根据需要创建开发板并选择具体的调试接口,本文使用JTAG,注意所选MCU名称。图5接下来点击OK,可以看见开发板的详细信息,包括系列名,以及RAM、ROM的起始地址以及具体大小。图6由于后续将采用LiteOS的启动文件,此处勾选不生成启动文件。图7生成的具体目录情况如下所示,除了Includes文件夹,其余文件夹为空。图83.2 导入LiteOS源码之后在Src文件夹下,新建目录,具体操作如下所示,命名为Huawei_Lab_IoT_link,同时将其链接到LiteOS源码所在文件夹。图9图10图11点击Finish完成创建,打开Src下的Huawei_Lab_IoT_link文件夹,可以看见完整的工程目录。图123.3配置工程之后点击工具栏中Project下的Properties选项,选择C/C++ build,选择修改Build directory,将makefile generation 勾选取消,选择已有的Makefile文件,选择为LiteOS源码下D:\LiteOS\Huawei_IoT_link\LiteOS_Lab-iot_link\targets\STM32F429IGTx_FIRE\GCC文件(上述为我的链接文件路径)。图13 图14图15之后clean项目,然后选择工具栏的project选项中的build project当出现如下所示的内容时,说明make成功。图16图173.4配置调试器 接下来安装调试器,点击工具栏中Help下的Install New SoftWare选项,安装调试器,输入网址http://gnuarmeclipse.sourceforge.net/updates 稍等几秒钟会出现图中所示的调试器,可根据需要选择,本文项目中必选的是Jlink调试器。图18 图19 图20 图21接下来新建Jlink调试器,,进行如图所示的配置,选择debugger选项中添加设备名称为stm32f429IG。勾选Disable auto build。图22图23之后在Executable中选择,所安装的GNU目录项的bin文件夹下的arm-none-eabi-gdb.exe文件。之后在Common选项下选择Shared file。之后编译项目即可。图24
  • [Atlas200] atlas200 编译GCC报错
    编译project 下source 代码时报错,gcc: error: unrecognized command line option '-V',对GCC版本有要求?
  • [问题求助] 配置py-faster-rcnn的问题
    问题背景:    我想用自己的数据集训练一个目标检测网络。    华为提供了fasterrcnn模型( https://github.com/Ascend/models/tree/master/computer_vision/object_detect/faster_rcnn ),根据描述,这个模型是基于py-faster-rcnn构建的,这里面可能有一些官方caffe不支持的算子,所以官方版的caffe是不是不能直接使用?(我直接用官方版caffe替代py-faster-rcnn中的caffe后测试demo运行不通过。)因此我也打算使用这个版本来训练我的网络。问题:    但是在配置环境的过程中,我发现由于长久没有更新,这个py-faster-rcnn中的caffe原生支持的环境是cudnn v4,对应cuda7.0,而cuda7.0只能装在Ubuntu14,我的环境是Ubuntu16。所以我根据该教程在Ubuntu16.04上安装了cuda7.0,在这个过程中将gcc和g++的版本改为了4.8。结果在编译的过程中出现了.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::Message::InitializationErrorString() const' ...等错误。    我寻找了一些解决办法,但是都行不通。(在此之前,我的环境是cuda9,我已经成功编译过官方最新的caffe。)这时,我又将之前编译好的官方caffe清除(make clean)掉,然后再次编译,此时却编译失败了,与编译py-faster-rcnn中的caffe的错误是同一种类型。然后我又将gcc和g++的版本切换回原来的5.4,然后再编译就通过了,所以我推测失败的原因应该是gcc版本问题。    接着我安装了cuda8.0和cudnn v5,gcc和g++保持为5.4,但是此时编译仍然出错:./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_0000286f_00000000-5_adadelta_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/adadelta_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/adadelta_solver.o] Error 1 make: *** Waiting for unfinished jobs.... nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_0000287b_00000000-5_adagrad_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/adagrad_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/adagrad_solver.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_00002874_00000000-5_rmsprop_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/rmsprop_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/rmsprop_solver.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_00002892_00000000-5_sgd_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/sgd_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/sgd_solver.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_0000287a_00000000-5_nesterov_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/nesterov_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/nesterov_solver.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_00002899_00000000-5_adam_solver.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/solvers/adam_solver.o' failed make: *** [.build_release/cuda/src/caffe/solvers/adam_solver.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_0000288b_00000000-5_im2col.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/util/im2col.o' failed make: *** [.build_release/cuda/src/caffe/util/im2col.o] Error 1 nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ./include/caffe/util/cudnn.hpp(126): error: argument of type "int" is incompatible with parameter of type "cudnnNanPropagation_t" ./include/caffe/util/cudnn.hpp(126): error: too few arguments in function call 2 errors detected in the compilation of "/tmp/tmpxft_000028ca_00000000-5_math_functions.cpp4.ii". Makefile:604: recipe for target '.build_release/cuda/src/caffe/util/math_functions.o' failed make: *** [.build_release/cuda/src/caffe/util/math_functions.o] Error 1这个应该还是因为cudnn版本不符合py-faster-rcnn中的caffe所要求的版本导致的。总结:所以我想请问的是,华为官方是使用py-faster-rcnn中的caffe来训练fasterrcnn的吗?如果是的话,那开发环境是怎样的呢?有没有对代码做什么修改呢?  
  • [交流分享] 使用gcc9.1在开源组件xz编译时使用流水线编译选项-mtune=tsv110压缩效果参考
    Kunpeng920处理器支持流水线指令集,在编译过程中可以使用-mtune=tsv110编译选项来对比,增加流水线编译选项具体方法:l使用gcc9.1版本,在编译选项中分别带-mtune=tsv110和不带-mtune=tsv110两种场景下,分别编译XZ压缩工具,并使用编译好的XZ工具对gcc-9.1.0.tar.gz(119M)继续进行压缩,统计压缩和解压时间在xz开源组件编译后的目标文件夹下,执行如下指令可以计算压缩和解压时间,以及展示压缩后的文件大小等信息ltime ./xz -1 gcc-9.1.0.tar.gz;du -ksh gcc-9.1.0.tar.gz*;ls -l gcc-9.1.0.tar.gz*;read PAUSe;time ./unxz gcc-9.1.0.tar.gz*1.在xz目录下,分别执行./configure --prefix=/home/third-release/xz-no-tsv110 make -j 96 make install和./configure --prefix=/home/third-release/xz-tsv110 CPPFLAGS="-mtune=tsv110" CFLAGS="-mtune=tsv110"make -j 96make install2.分别在编译后生成的目标路径/home/third/release/xz-tsv110和/home/third-release/xz-no-tsv110下执行time ./xz -1 gcc-9.1.0.tar.gz;du -ksh gcc-9.1.0.tar.gz*;ls -l gcc-9.1.0.tar.gz*;read PAUSe;time ./unxz gcc-9.1.0.tar.gz* 然后分别计算五次求平均值,从对比来看,增加了-mtune=tsv110之后,以xz压缩工具为例,压缩时间有约10%的降低,解压时间则差别不大
  • 【鲲鹏翱翔】鲲鹏服务器GCC交叉编译环境搭建指南
    1、简介交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。本指南主要内容为在非ARM架构服务器环境下搭建ARM的GCC编译环境,编译基于ARM架构的应用软件。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的GCC相同。搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出ARM架构下Linux系统所需的操作系统、应用程序等,然后再上传到ARM服务器执行。2、环境类别版本配置备注ARM测试服务器CentOS7.5ARM通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB华为云官网正在公测x86编译服务器CentOS7.52vCPUs|4GB|s3.large.2 1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html2.本地服务器部署Centos7.5x86编译服务器Ubuntu16.042vCPUs|4GB|s3.large.21.在华为云官网购买https://www.huaweicloud.com/product/ecs.html2.本地服务器部署Ubuntu16.04交叉编译器arm-linux-gcc 5.5.0https://releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz3、交叉编译器安装(x86服务器)3.1.安装标准的C开发环境执行以下命令:Ubuntu: apt-get install build-essentialCentOS: yum groupinstall Development Tools3.2.在/usr/local下建立名为ARM-toolchain的文件夹mkdir   /usr/local/ARM-toolchain3.3 下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz    可以通过wget的形式下载cd   /usr/local/ARM-toolchainwget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz     也可以从网页上下载后上传到/usr/local/ARM-toolchain目录下。交叉编译工具链的地址在https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/      下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz下载完成后,解压tar包tar -xvf   gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz3.4.配置环境变量修改配置文件,在配置文件的最后一行加入路径配置:Ubuntu:vim /etc/bash.bashrc # Add ARM toolschain pathPATH= /usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin:"${PATH}"CentOS: vim /etc/profile# Add ARM toolschain pathexport   PATH=$PATH:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin3.5.环境变量生效与测试执行以下命令:Ubuntu:source /etc/bash.bashrc          aarch64-linux-gnu-gcc  -v执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本CentOS: source /etc/profile         aarch64-linux-gnu-gcc  -v执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本4、测试4.1.在x86服务器交叉编译1、创建hello.c执行:vim hello.c#include <stdio.h>int main(void){            printf("hello linux\n");          return   0;}2.交叉编译执行:aarch64-linux-gnu-gcc -o arm-hello hello.c4.2.测试执行1、在x86服务器上测试执行:chmod +x arm-hello执行:./arm-hello页面显示:-bash: ./arm-hello: cannot   execute binary file 2. 拷贝执行文件至ARM服务器执行:chmod +x arm-hello执行:./arm-hello页面显示:hello linux 5、参考信息     交叉编译指导: https://releases.linaro.org/components/toolchain/binaries/https://blog.csdn.net/mars1743/article/details/20492285 6、FAQ     待补充
  • 【鲲鹏翱翔】鲲鹏服务器GCC版本升级指南
    1. 简介GCC 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。鲲鹏服务器CentOS7.5中默认GCC版本为4.8.5,很多情况下需要升级。本指南描述了GCC升级到5.4.0的过程,可供相关人士参考。类别:编译器2. 部署环境Packet NameVersionCentOSCentOS  7.5 with ARMGCC5.4.07.3.03. 安装部署    3.1 编译升级GCC由于服务器Centos7.5默认安装的GCC版本较低,在某些场景下需要进行升级GCC,版本信息如下:[root@ecs-arm-felix-free01   ~]# gcc --versiongcc   (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 -versiongcc   (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 GLIBC3.2 参考信息[1] GCC升级版本:https://www.linuxidc.com/Linux/2018-11/155395.htm