目录
一,下载gcc离线安装包
二,下载gcc依赖包
三,安装gcc
1, 解压
2, 将依赖库放置环境
3, 安装
3.1自动安装
3.1.1 执行依赖库的编译
3.1.2 新建编译目录
3.1.3 配置编译环境
3.1.4 编译
3.1.5 安装
3.2 手动安装
3.2.1 安装GMP-4.3.2
3.2.2 安装mpfr
3.2.3 安装mpc
3.2.4 编译
3.2.5 编译
3.2.6 安装
四,配置gcc、g++ 到当前环境
4.1 先查看已有gcc或g++版本
4.2 查看gcc的软链接
4.3 软链接到新安装版本路径
4.4 由libasan.so引起的异常
一,下载gcc离线安装包
gcc官网地址:https://gcc.gnu.org/
进入官网,选择Download/Mirrors
点击 GNU FTP
拉到下方 找到 Downloading GNU software
选择gcc
找到需要下载的版本,进行下载
二,下载gcc依赖包
安装环境无外网的情况下,需要手动下载依赖包(有网,则不需要该步骤),一般是三个依赖包:mpc,gmp,mpfr,下载地址都是从gcc官网进入,需要下载的版本是gcc安装包解压后的文件(gcc-4.8.5/contrib/download_prerequisites)中,配置的版本(要大于等于该版本)
mpc下载地址:https://ftp.gnu.org/gnu/mpc/
gmp下载地址:https://ftp.gnu.org/gnu/gmp/
mpfr下载地址:https://ftp.gnu.org/gnu/mpfr/
有的版本需要有isl依赖包,
isl下载地址:http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/
三,安装gcc
1, 解压
将下载的文件拷到环境上解压
tar -zxvf gcc-4.8.5.tar.gz
2, 将依赖库放置环境
将下载好的依赖项(mpc,gmp,mpfr),放入gcc-4.8.5目录下
3, 安装
3.1自动安装
按照依赖库的版本,将./contrib/download_prerequisites文件中信息更改,并且将(wget的下载操作注释掉),如果是有网络的情况下,可以不用手动下载依赖包,直接执行。
3.1.1 执行依赖库的编译
cd gcc-4.8.5
./contrib/download_prerequisites
3.1.2 新建编译目录
mkdir gcc-build-4.8.5
3.1.3 配置编译环境
cd gcc-build-4.8.5
../gcc-4.8.5/configure --prefix=/usr/local/gcc-4.8.5 --enable-threads=posix --disable-checking --disable-multilib --enable--long-long --with-system-zlib --enable-languages=c,c++
参数说明:
--prefix:不覆盖原有的gcc,自定义编译安装路径
--enable-languages:编译出来gcc支持的语言
3.1.4 编译
编译gcc、g++,执行后需等待较长时间。
make -j6
3.1.5 安装
安装到配置目录下
make install
3.2 手动安装
3.2.1 安装GMP-4.3.2
解压gmp-4.3.2后,得到源代码目录,创建一个临时编译目录temp。
$ tar -jxvf gmp-4.3.2.tar.bz2
$ cd gmp-4.3.2
$ mkdir temp
$ cd temp
开始配置安装目录,进入temp目录后,输入以下命令:
$ ../configure --prefix=/usr/local/gmp-4.3.2
$ make
$ make install
这样gmp就安装完成了。安装mpfr和mpc过程也差不多,只是安装的时候得加入依赖项
3.2.2 安装mpfr
我这里选择的是2.4.2版本的mpfr。解压,建立临时编译目录temp,进入temp目录
$ tar -zxvf mpfr-2.4.2.tar.gz
$ cd mpfr-2.4.2
$ mkdir temp
$ cd temp
$ ../configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
$ make
$ make install
其中--with=/usr/local/gmp-4.3.2就是依赖项, /usr/local/gmp-4.3.2是gmp的安装目录
3.2.3 安装mpc
我选择的是1.0.1版本mpc.解压,建立临时编译目录temp,进入temp目录.
$ tar -zxvf mpc-1.0.1.tar.gz
$ cd mpc-1.0.1
$ mkdir temp
$ cd temp
$ ../configure --prefix=/usr/local/mpc-1.0.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
$ make
$ make install
记得后面两项的依赖项,也就是你的gmp和mpfr的安装目录
3.2.4 编译
$ mkdir gcc-build-4.8.5
$ cd gcc-build-4.8.5
$ /usr/local/gcc-4.8.5/configure --prefix=/usr/local/gcc-4.8.5 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-1.0.1
记得加上后面三个依赖项,否则会出刚开始出现的错误的。
3.2.5 编译
编译gcc、g++,执行后需等待较长时间。
make -j6
3.2.6 安装
安装到配置目录下
make install
四,配置gcc、g++ 到当前环境
4.1 先查看已有gcc或g++版本
which gcc
gcc --version
4.2 查看gcc的软链接
cd /usr/bin/
ls -l gcc*
则系统实际使用的gcc路径 /usr/bin/gcc-4.8.2
4.3 软链接到新安装版本路径
修改gcc、g++ 软链接到新安装版本路径
ln -snf /usr/local/gcc-4.8.5/bin/gcc /usr/bin/gcc
ln -snf /usr/local/gcc-4.8.5/bin/g++ /usr/bin/g++
4.4 由libasan.so引起的异常
错误信息:
undefined reference to '_asan_init_v4' 是由于gcc编译器版本中的库引入不对
发现环境引用的libasan.so库并不是我们安装gcc版本中的库
进入错误日志中库的目录:/usr/lib/gcc/x86_64-redhat-linux/4.8.5
将libasan_preinit.o和libasan.so 备份之后,建立软连接
mv libasan_preinit.o bak_libasan_preinit.o.240425
mv libasan.so bak_libasan.so.240425
In -snf /usr/local/gcc-4.8.5/lib64/libasan_preinit.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libasan_preinit.o
In -snf /usr/local/gcc-4.8.5/lib64/libasan.so /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libasan.so