预准备
安装Cuda, GPU驱动前, 请对照https://docs.nvidia.com/cuda/archive/10.1/cuda-installation-guide-linux/index.html中的要求检查是否满足系统环境要求, 不满足则需要降级.
下文描述如何对GCC进行降级.
安装包下载与安装
请严格按照顺序进行下载与安装
m4–>gmp–>mpfr—>mpc–>gcc
进入https://mirrors.ustc.edu.cn/gnu/查找对应版本的包(五个包均可在此网站找到)
随后使用wget 链接
命令在Ubuntu主机上下载即可
m4
gunzip m4-1.4.16.tar.gz
tar -xvf m4-1.4.16.tar
cd m4-1.4.16/
./configure
make
sudo make install
gmp
tar -Jxvf gmp-6.1.2.tar.xz
mkdir temp #在与gmp-6.1.2同级别的目录下建一个新文件夹,叫temp(自己命名)
cd temp
../gmp-6.1.2/configure –prefix=/usr/local/gmp-6.1.2 ------------#这句是说,安装路径是/usr/local/,名字叫gmp-6.1.2;
make
sudo make install
#安装好后,可以查看/usr/local/gmp-6.1.2目录下有三个文件夹
mpfr
unzip mpfr-3.1.3.zip
新建一个新的文件夹并进入
../mpfr-3.1.3/configure --prefix=/usr/local/mpfr-3.1.3 --with-gmp=/usr/local/gmp-6.1.2
# prefix是安装路径,with是依赖的gmp库
make
sudo make install
mpc
tar -zxvf mpc-1.0.3.tar.gz
新建一个新的文件夹并进入
../mpc-1.0.3/configure –prefix=/usr/local/mpc-1.0.3 –with-gmp=/usr/local/gmp-6.1.2 –with-mpfr=/usr/local/mpfr-3.1.3
make
sudo make install
gcc
tar -zxvf gcc-5.4.0.tar.gz
新建一个新的文件夹并进入
../gcc-5.4.0/configure --prefix=/usr/local/gcc-5.4 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-3.1.3 --with-mpc=/usr/local/mpc-1.0.3
make
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,改动相应代码(在页面底部). 网站上的路径可能跟实际不一样, 反正就在那些文件夹里, 可以查找对应文件…
-
还可能报一个跟"SIGSEGV"相关的错误
- 出现此错误请进入报错的文件, 添加如下引用
#include <signal.h> #include <setjmp.h> #include <stdarg.h> #include <stdlib.h>
添加环境变量
sudo ln -s /usr/local/gcc-5.4/bin/gcc /usr/local/bin/gcc54
sudo ln -s /usr/local/gcc-5.4/bin/g++ /usr/local/bin/g++54
并在etc/profile文件中添加:
export LD_LIBRARY_PATH=/usr/local/gcc-5.4/lib:/usr/local/gcc-5.4/lib64:$LD_LIBRARY_PATH
cd /usr/bin
sudo rm gcc
sudo rm g++
sudo ln -s /usr/local/gcc-5.4/bin/gcc gcc
sudo ln -s /usr/local/gcc-5.4/bin/g++ g++
重启
验证
gcc --version
g++ --version