最近发现gcc版本对于编译类似于opencv,caffe等等都是有版本需求的。之前一直是去重新装gcc。但是昨天发现其实可以安装多个gcc版本互相切换的。我大概发现了两种方法,当然还可能有其他的,暂不去探究。当然也必然是参考其他大神的做法加以总结以便后用?
在说方法之前,先普及一下查询的命令:
gcc -v # 用于查询当前版本
which gcc # 查询gcc所在位置(/usr/bin/gcc)
/usr/bin/gcc -v # 也可查询版本
ll /usr/bin/gcc* # 也可用于gcc查询版本
方法一:(我倾向于这个,因为比较方便)
安装时使用apt源安装。涉及ubuntu中的一个工具:update-alternatives是系统中专门维护系统命令链接符的工具。搜了一些些介绍:这个命令会建立很软链接,当切换版本的时候,只需要更改软链接的指向。总结一下这个命令很有用,不仅仅局限于gcc的版本管理,像java的版本也可以使用这个管理,需要再做探究。这里仅仅是一个小小的使用。
1、gcc安装命令:
sudo apt-get install gcc-4.7 gcc-4.7-multilib g++-4.7 g++-4.7-multilib
sudo apt-get install gcc-5 gcc-5--multilib g++-5 g++-5-multilib
sudo apt-get install gcc-6 gcc-6--multilib g++-6 g++-6-multilib
这里我安装了4.7版本,因为matlab2015a对应于这个版本,而这里的5真正的版本号为5.5,而6对应的是6.5。这里需要声明的是apt源中并没有包含所有的版本,比如说5.4,6.3,都无法找到。如果必须其他版本可通过编译得,见方法二。
查找的命令也可普及一下(可忽略):
sudo apt-cache search gcc # gcc可替换为其他包名,同样是有效的查询
sudo apt-cache show gcc #展示版本号
2、update-alternatives的设置
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 30 --slave /usr/bin/g++ g++ /usr/bin/g++-6
# 20,40,30这些表示的是优先级,可根据需要选定,优先级高的即为默认的。
3、选择所需版本
sudo update-alternatives --config gcc
根据所需要的版本选择1,2,3即可。非常方便。
删除方法:
sudo update-alternatives --remove gcc /usr/bin/* # *为指定版本,如gcc-5
# 删除这个后再通过源卸载
sudo apt-remove --省略--
方法二:
根据源码编译,自己创建软链接,根据需求更改软链接。比较麻烦。
源码地址:https://ftp.gnu.org/gnu/gcc
1、安装命令
# 一、下载源码
# 二、解压缩,进入目录
./contrib/download_prerequisites
mkdir build
cd build
# 下一条命令可根据需求改动,可以进一步查询
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j16 # 开始编译
sudo make install
# 如果卸载
cd build
cd gcc
sudo make uninstall
2、每次重新建立符号连接,删除以前的链接,但是我没有尝试过,可自行尝试。当初查到的也不知道是哪篇文了,如果需要,可自行查询。
# 建立链接
cd /usr/bin
sudo ln -s /自己编译的位置/build/bin/gcc gcc
# 删除链接
cd /usr/bin
sudo rm gcc