arm 架构centos7.4如何源码安装gcc 7.3.0

1、环境:arm架构的centos7.4系统服务器

2、查看当前的gcc版本:gcc  -v

[root@aarch64vm-centos74-011 ~]# gcc -v

gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)

3、下载gcc 7.3.0的源码:https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

4、将源码上传至服务器然后解压

[root@aarch64vm-centos74-010 ~]# mkdir -p /usr/local/gcc

[root@aarch64vm-centos74-010 ~]# tar -xvf gcc-7.3.0.tar.gz -C /usr/local/gcc/

5、解压完成后,编译安装gcc源码

(1)进入gcc 7.3.0目录,运行 download_prerequisites 脚本 。

[root@aarch64vm-centos74-010 gcc]# cd gcc-7.3.0/

[root@aarch64vm-centos74-010 gcc-7.3.0]# ./contrib/download_prerequisites

2018-07-18 16:06:03 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840] -> "./gmp-6.1.0.tar.bz2" [1]

2018-07-18 16:08:29 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284] -> "./mpfr-3.1.4.tar.bz2" [1]

2018-07-18 16:09:25 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925] -> "./mpc-1.0.3.tar.gz" [1]

2018-07-18 16:12:42 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 [1626446] -> "./isl-0.16.1.tar.bz2" [1]

gmp-6.1.0.tar.bz2: OK

mpfr-3.1.4.tar.bz2: OK

mpc-1.0.3.tar.gz: OK

isl-0.16.1.tar.bz2: OK

All prerequisites downloaded successfully.

[root@aarch64vm-centos74-010 gcc-7.3.0]#

(2)建立编译输出目录,将所有的中间文件都放到该目录中。

[root@aarch64vm-centos74-010 gcc-7.3.0]# mkdir gcc-build-7.3.0

[root@aarch64vm-centos74-010 gcc-7.3.0]# cd gcc-build-7.3.0/

[root@aarch64vm-centos74-010 gcc-build-7.3.0]# cp ../gmp-6.1.0.tar.bz2 ./

[root@aarch64vm-centos74-010 gcc-build-7.3.0]# cp ../mpfr-3.1.4.tar.bz2 ./

[root@aarch64vm-centos74-010 gcc-build-7.3.0]# cp ../mpc-1.0.3.tar.gz ./

[root@aarch64vm-centos74-010 gcc-build-7.3.0]# cp ../isl-0.16.1.tar.bz2 ./

[root@aarch64vm-centos74-010 gcc-build-7.3.0]# ls

gmp-6.1.0.tar.bz2 isl-0.16.1.tar.bz2 mpc-1.0.3.tar.gz mpfr-3.1.4.tar.bz2

[root@aarch64vm-centos74-010 gcc-build-7.3.0]#

若不能从镜像源获取依赖包,从https://gcc.gnu.org/pub/gcc/infrastructure/获取对应的压缩包,解压拷贝到gcc-build-7.3.0目录

安装依赖包yum install m4、yum install gcc-c++、yum install texinfo

(3)编译安装依赖包(需按顺序安装,有依赖)

        安装gmp:

                 cd gmp-6.1.0

                 ./configure --prefix=/usr/local/gmp

                make -j4 && make check && make install

                将gmp.h拷贝到/usr/include下、so拷贝到/usr/lib64

         安装mpfr:

                cd mpfr-3.1.4

                ./configure --prefix=/user/mpfr-3.1.6/mpfr-3.1.4-obj --with-gmp=/usr/local/gmp

               make -j4 && make install

        安装mpc

               cd mpc-1.0.3

              ./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/user/mpfr-3.1.4/mpfr-3.1.4-obj

              make -j4 && make install

        安装isl

             cd isl-0.16.1

    ./configure --prefix=/usr/local/isl --with-gmp=/usr/local/gmp --with-mpfr=/user/mpfr-3.1.4/mpfr-3.1.4-obj --with-mpc=/usr/local/mpc

            make -j4 && make install

(4)配置 :

         在/usr/local/gcc/gcc 7.3.0目录执行:

          ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  --with-gmp=/usr/local/gmp --with-mpfr=/user/mpfr-3.1.6/mpfr-3.1.6-obj  --with-mpc=/usr/local/mpc --with-isl=/usr/local/isl

         参数解释: 

         --enable-checking=release           //增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做检查;

         --enable-languages=c,c++          //让gcc支持的编程语言 ;

         --disable-multilib               //取消多目标库编译(取消32位库编译)。

(5)make编译

当前目录执行:make  -j4

(编译时间较长,耐心等待!!!!!!!)

 若编译提示找不到依赖包的动态库,将编译目录下生成的动态库拷贝到/usr/lib64目录再重新编译;

make install -j4

(6)卸载旧版本的gcc,安装gcc7.3.0

rpm -q gcc 

rpm -q gcc-c++

根据执行输出的包名执行

rpm -e [包名] 

[root@localhost ~]# rpm -q gcc

gcc-4.8.5-28.el7_5.1.aarch64

[root@localhost ~]# rpm -q gcc-c++

gcc-c++-4.8.5-28.el7_5.1.aarch64

[root@localhost ~]# rpm -e gcc-c++-4.8.5-28.el7_5.1.aarch64

[root@localhost ~]# rpm -e gcc-4.8.5-28.el7_5.1.aarch64

(7)更新bin

更新默认路径下的gcc g++ bin

/usr/sbin/update-alternatives --install  /usr/bin/gcc gcc /usr/local/gcc/bin/aarch64-unknown-linux-gnu-gcc-7.3.0 73

/usr/sbin/update-alternatives --install  /usr/bin/g++ g++ /usr/local/gcc/bin/aarch64-unknown-linux-gnu-g++ 73

更新默认路径下的so

[root@localhost ~]# find / -name "libstdc++.so*"

/usr/lib/gcc/aarch64-redhat-linux/4.8.2/libstdc++.so

/usr/local/gcc/gcc-7.3.0/prev-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24

cp /usr/local/gcc/gcc-7.3.0/aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64/

cd /usr/lib64/

rm -rf libstdc++.so.6.0.19

rm -rf libstdc++.so.6

ln -s libstdc++.so.6.0.24 libstdc++.so.6

(8)验证

 

[root@localhost ~]# gcc -v

gcc version 7.3.0 (GCC)

[root@localhost ~]# g++ -v

gcc version 7.3.0 (GCC)

[root@localhost ~]# which gcc

/usr/local/bin/gcc

[root@localhost ~]#

安装成功!!!

========================================*如何还原旧版本*=========================================

(1)查看当前gcc版本号

 

$: gcc -v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/aarch64-unknown-linux-gnu/7.3.0/lto-wrapper

Target: aarch64-unknown-linux-gnu

Configured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

Thread model: posix

gcc version 7.3.0 (GCC)

$: g++ -v

Using built-in specs.

COLLECT_GCC=g++

COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/aarch64-unknown-linux-gnu/7.3.0/lto-wrapper

Target: aarch64-unknown-linux-gnu

Configured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

Thread model: posix

gcc version 7.3.0 (GCC)

(2)查看旧版本的安装包

 

$: rpm -q gcc

package gcc is not installed

$: rpm -q g++

package g++ is not installed

(3)yum直接安装

$:  yum install  gcc gcc-c++

如果:

rpm -q gcc和rpm -q g++有安装包,则只需配置/etc/profile文件中加

#gcc

export PATH=$PATH:/usr/bin

进入/usr/local/bin目录,mv gcc ~和mv g++ ~

执行source /etc/profile

验证gcc是否更换

最后将~/目录下的gcc和g++移动到/usr/local/bin

猜你喜欢

转载自blog.csdn.net/qq_29044159/article/details/107939027