为了安装必要的图网络的库,我需要某版本的torch和cuda,于是我需要安装gcc5.5.0。但是服务器上的gcc是7.2.0的,多版本gcc势在必行,踩坑一往无前,一望无际,一泻千里。懂者自懂。
查看gcc版本
装啥都要先看,我先有啥
# 最简单,直接看现在系统所用版本
gcc -v
可以看到,我的系统是gcc 7.2.0
# 再看我系统里实际还有啥版本
find /usr -name gcc
可以看到,这里面不止一个版本gcc,这是我装了5.5以后的,所以有5.5
下载相应版本
就这下呗,啥版本都有
gcc各版本:http://ftp.gnu.org/gnu/gcc/
添加环境变量
迟早要加,想好自己要取什么名字,还能顺便看看已经安装好的gcc版本怎么写的
sudo vim /etc/profile
在最后添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-5.5/lib64
安装全程
开始,步步坑
wget ftp://ftp.gnu.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar xvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
sudo ./configure --prefix=/usr/local/gcc-5.5
ok,开始出错
# 还在gcc-5.5.0目录下
./contrib/download_prerequisites
cd ~
mkdir gcc-build && cd gcc-build
~/gcc-build/gcc-5.5.0/configure --disable-multilib --enable-languages=c,c++
../gcc-5.5.0/configure -v --prefix=/usr/local/gcc-5.5
来吧,开始make
make
出错:
网上有方法是:
sudo vim /etc/profile
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
对我没用,最后这个管用:
就这?就这?我试了半小时各种方法!
ok,继续
sudo make
sudo make install
装完用
find /usr -name gcc
看看是不是多出新装的版本
设置软连接
sudo ln -s /usr/local/gcc-5.5 /usr/local/gcc
sudo ln -s /usr/local/gcc-5.5 /usr/local/gcc5.5
sudo ln -s /usr/local/gcc-5.5/bin/g++ /usr/bin/g++5.5
这些我都试了,但是gcc还是切换不了
看看别人装6.3,这样就ok
sudo ln -s /usr/local/gcc-6.3 /usr/local/gcc
sudo ln -s /usr/local/gcc/bin/ /usr/bin/
sudo ln -s /usr/local/gcc/bin/g++ /usr/bin/
难道是因为我没有重新装依赖库(讲道理是相应版本的gmp, mpfr和mpc)?
我怕冲突
还有很多博客也没有重新安装依赖库 一般都是新装gcc才下的
多版本切换命令
sudo update-alternatives --config gcc
出现以下:
There is 1 program that provides 'gcc'.
Selection Command
-----------------------------------------------
*+ 1 /usr/local/gcc-7.2.0/
Enter to keep the current selection[+], or type selection number:
此时表示当前活动gcc为第1个gcc7.2.0;
输入数字,如果有多版本会有123…,按回车,会切换到要选的版本的gcc-4
有时候切换gcc以后,还要切换g++,命令同样
sudo update-alternatives --config g++
对 ,最后的最后,踏过无数坑,我还是没成功
成功再更