Ubuntu18.04源码编译安装gcc6.3.0(呕心沥血,各种坑)

由于需要在ubuntu18.04上用MATLAB2018b跑一个程序,需要gcc6.3.0编译相关代码,可是直接用apt-get install只能安装gcc6.5.0版本,所以需要用源代码编译。

安装gcc之前要安装gmp,mpfr,mpc,isl这几个库,并且要卸载旧的gcc,然而我们需要在最后安装gcc之前再卸载旧的gcc,因为安装必需的库时需要旧的gcc。

安装gmp
在https://gmplib.org/下载最新的压缩包,解压到指定路径上,然后

cd gmp-6.1.2/
mkdir build
cd build/
../configure -prefix=/usr/local/gmp-6.1.2
make -j8
sudo make install
安装mpfr
在https://www.mpfr.org/下载最新的压缩包,解压到指定路径上,然后

cd mpfr-4.0.2/
mkdir build
cd build/
../configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2
make -j8
sudo make install
 

安装mpc
在http://www.multiprecision.org/mpc/下载最新的压缩包,解压到指定路径上,然后

cd mpc-1.1.0/
mkdir build
cd build/
../configure -prefix=/usr/local/mpc-1.1.0 -with-gmp=/usr/local/gmp-6.1.2 -with-mpfr=/usr/local/mpfr-4.0.1
make -j8
sudo make install
安装isl
在http://isl.gforge.inria.fr/下载最新的压缩包,解压到指定路径上,然后

cd isl-0.18/
mkdir build
cd build/
../configure --prefix=/usr/local/isl-0.18 --with-gmp=/usr/local/gmp-6.1.2
make -j8
sudo make install
安装gcc6.3
 首先

vim ~/.bashrc
在最后面加上一行

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:/usr/local/isl-0.18/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu
如果不进行上面一步的话,可能会出现如下的错误

checking for suffix of object files... configure: error: in '/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See 'config.log' for more details.
在https://gcc.gnu.org/releases.html下载压缩包,解压到指定路径上,然后

cd gcc-6.3.0/
mkdir build
cd build/
../configure --prefix=/usr/local/gcc-6.3 --disable-multilib --with-system-zlib --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 --with-isl=/usr/local/isl-0.18
make -j8
sudo make install
 

 在安装过程中存在各种坑
error: dereferencing pointer to incomplete type 'struct ucontext'
 出现这个问题的话,就找到 make_folder/libgcc/config/i386/linux_unwind.h文件,将struct ucontext *uc_ = context->cfa; 改为 struct ucontext_t *uc_ = context->cfa;

aggregate ‘sigaltstack handler_stack’ has incomplete type and cannot be defined
   struct sigaltstack handler_stack;
 出现这个问题的话,就到https://reviews.llvm.org/D35246网站,改动相应代码,如图所示:

 然后,make一下应该就可以了

安装好之后更改一下gcc的链接

cd /usr/bin
sudo ln -s /usr/local/gcc-6.3/bin/gcc gcc
sudo ln -s /usr/local/gcc-6.3/bin/g++ g++

————————————————
版权声明:本文为CSDN博主「echo_hao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37392244/article/details/103591828

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值