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网站,改动相应代码,如图所示:

Ubuntu18.04源码编译安装gcc6.3.0(呕心沥血,各种坑)_第1张图片

Ubuntu18.04源码编译安装gcc6.3.0(呕心沥血,各种坑)_第2张图片

 Ubuntu18.04源码编译安装gcc6.3.0(呕心沥血,各种坑)_第3张图片

 Ubuntu18.04源码编译安装gcc6.3.0(呕心沥血,各种坑)_第4张图片

 然后,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++

 

 

 

 

你可能感兴趣的:(gcc安装)