GCC 编译安装

您所在的位置:网站首页 编译安装gcc要多久 GCC 编译安装

GCC 编译安装

2023-04-22 00:55| 来源: 网络整理| 查看: 265

默认情况下,CentOS7 预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编译器的版本进行升级,比如安装最新的Mariadb 10的时候,就需要使用高版本的gcc,具体升级过程如下:

一、下载镜像

首先可以去gnu的官网https://gcc.gnu.org/mirrors.html下载新版本的安装包。

但是gnu官网并没有提供国内的镜像地址,所以我们可以退而求其次,在国内阿里的gnu镜像站https://mirrors.aliyun.com/gnu进行下载

二、安装GMP、MPFR、MPC

下载之后上传至Linux准备安装,如果此时直接进行编译安装,此时gcc会报出错误:configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+. 也就是说安装该版本的GCC 需要GMP 版本 >= 4.2 MPFR版本 >= 2.4.0 MPC版本 >= 0.8.0 这3个依赖缺一不可,并且这3个依赖之间也具有相互依赖关系,即gmp独立安装,mpfr依赖于gmp,mpc依赖于gmp和mpfr,虽然执行gcc目录下的:./contrib/download_prerequisites 可以解决依赖问题,但是一般国内下载速度比较慢,所以这里手动安装如下三个依赖。

三个依赖的具体版本可以自行选择,下载地址如下:

gmp:http://ftp.gnu.org/gnu/gmp/

mpfr(GNU镜像):http://ftp.gnu.org/gnu/mpfr/ 或者官网: http://www.mpfr.org/mpfr-current/

mpc:http://ftp.gnu.org/gnu/mpc/

首先安装gmp,命令如下:

tar -xvzf gmp-5.0.1.tar.gz cd gmp-5.0.1/ mkdir temp cd temp/ ../configure --prefix=/usr/local/gmp-5.0.1 make make install

注意:编译时建议指定安装位置,以便后面加载依赖,这里是/usr/local下。

然后安装mpfr,命令如下:

tar -xvzf mpfr-3.1.5.tar.gz cd mpfr-3.1.5/ mkdir temp cd temp/ ../configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-5.0.1 make make install

到这里mpfr安装完毕,并且必须添加--with-gmp导入gmp依赖,如果不加这个参数也会安装成功,但是后面安装GCC会报一个内部依赖的错误,如果这里不加会很麻烦,然后再安装mpc,命令如下:

tar -xvzf mpc-1.0.3.tar.gz cd mpc-1.0.3/ mkdir temp cd temp/ ../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 make make install

同样一定要加上依赖的参数,现在mpc也安装完毕,然后执行 vim /etc/profile 编辑环境变量配置文件,直接在文件最后添加一行下面的变量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.0.3/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.5/lib

上面的路径要和实际安装时编译的路径一致,保存并退出后,执行 source /etc/profile 使环境变量生效

三、安装gcc

安装好上述三个依赖包后就可以开始安装gcc了,安装过程如下:

tar -jxvf gcc-4.9.3.tar.bz2 cd gcc-4.9.3/ mkdir output cd output/ ../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.3

然后开始编译并且安装:

make -j4 sudo make install

查看安装

ls /usr/local/bin | grep gcc

重启,查看gcc版本

gcc -v

源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似 /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.24' not found 的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。

运行以下命令检查动态库

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。

执行以下命令,查找编译gcc是生成的最新的动态库。

find / -name "libstdc++.so*"

将生成的最新的动态库 libstdc++.so.6.0.24 复制到 /usr/lib64 目录下

cd /usr/lib64 cp /usr/local/lib64/libstdc++.so.6.0.24 ./

删除原来的软连接:

rm -rf libstdc++.so.6

将默认库的软连接指向最新动态库:

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

默认动态库升级完成。重新运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

可以看到 输出有"GLIBCXX_3.4.24" 了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3