1.先安装gmp,mpfr,mpc三个包
- 安装gmp包:
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure –prefix=/usr/local/gmp
make && make install
- 安装mpfr包:
wget https://www.mpfr.org/mpfr-current/mpfr-4.0.1.tar.gz
tar xvf mpfr-4.0.1.tar.gz
cd mpfr-4.0.1
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install
- 安装mpc包:
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make && make install
将库文件加入如下文件:
vi /etc/ld.so.conf
增加以下三行
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
加完后使用如下命令更新
ldconfig -v
- 源码安装gcc包:
wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
make -j2
make install
删除4.8版本,修改6.4版本的软链接
后续补充
三、安装过程中出现的问题及解决方法
1.. ../mpc/src/mul.c conflicting types for ‘mpfr_fmma’
解决办法:
将mul.c内的所有mpfr_fmma函数改名为mpfr_fmma_mul,本人改动了三处地方
2.执行完1后在配置gcc时出现要求mpfr gmp mpc版本要求的错误时,在gcc目录下的config.log日志内如果有mpfr_add_one_ulp和mpfr_sub_one_ulp不存在的错误,需要修改mpfr下的mpfr.h,新增如下内容:
#define mpfr_add_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
#define mpfr_sub_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))
本人安装过程中,主要参考了如下链接的文档:
https://www.cnblogs.com/milton/p/7653760.html
http://www.mamicode.com/info-detail-2258026.html
本文描述如何通过编译源码,来升级gcc编译版本,由于CentOs默认gcc编译版本太低不能满足需求。我通过自己的安装升级经验总结了一个shell脚本,整体时间大约在一个小时左右。
cd /usr/src/
vim upgradeGcc.sh
在upgradeGcc.sh中输入下面的内容
#!/bin/bash
#在非root账户下,使用sudo命令
#获取源码
#sudo wget http://mirrors.kernel.org/gun/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
wget http://mirrors.kernel.org/gun/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
#解压
#sudo tar -xvf gcc-7.3.0.tar.gz
tar -xvf gcc-7.3.0.tar.gz
cd gcc-7.3.0
#sudo ./contrib/download_prerequisites
./contrib/download_prerequisites
cd ..
#建立编译输出目录
#sudo mkdir gcc-build-7.3.0
mkdir gcc-build-7.3.0
#进入下面目录,执行命令,生成Makefile文件
cd gcc-build-7.3.0
#sudo ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高
make -j4
#安装
make install
执行下面的命令,等待安装完成,等待时间可能有点长
chmod 777 upgradeGcc.sh
./upgradeGcc.sh
shell中的命令可以以脚本的方式执行,也可以以单条命令的方式执行。
检查版本
[root@promote ~]# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 7.3.0 (GCC)
升级成功。
进行检测:
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
cout << "Hello world!" << endl;
auto i = 10;
cout << i << endl;
return 0;
}