由于需要在ubuntu18.04上用MATLAB2018b跑一个程序,需要gcc6.3.0编译相关代码,可是直接用apt-get install只能安装gcc6.5.0版本,所以需要用源代码编译。
安装gcc之前要安装gmp,mpfr,mpc,isl这几个库,并且要卸载旧的gcc,然而我们需要在最后安装gcc之前再卸载旧的gcc,因为安装必需的库时需要旧的gcc。
在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
在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
在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
在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
首先
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++