linux上升级gcc/g++
Ubuntu
添加源,默认的稳定源里最新只有gcc8,如果需要更高的版本需要添加这个测试源,这一步不是必须做,可以先看看默认的源里是否已经有了你想要的版本
1 | sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
更新软件列表
1 | sudo apt-get update |
安装想要升级的gcc/g++版本
1 | sudo apt-get install gcc-9 g++-9 |
查看目前存在的版本
1 | sudo updatedb && sudo ldconfig |
通过update-alternatives切换默认版本(本质是修改软连接,最后的数字是优先级,优先级高的自动为默认版本)
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20 |
现在就升级好了,可以通过命令查看
1 | gcc --version |
BTW:
之后可以随时通过
1 | sudo update-alternatives --config gcc |
手动切换默认版本
而删除一个版本使用下面的命令
1 | sudo update-alternatives --remove gcc /usr/bin/gcc-9 |
CentOS
安装scl源
1 | yum install -y centos-release-scl scl-utils-build |
查看可以安装的gcc版本
1 | yum list all --enablerepo='centos-sclo-rh' | grep gcc |
安装 devtoolset-9
1 | yum install -y devtoolset-9-gcc.x86_64 devtoolset-9-gcc-c++.x86_64 devtoolset-9-gcc-gdb-plugin.x86_64 |
开启一个指定gcc/g++版本的bash
1 | scl enable devtoolset-9 bash |
可以在/etc/profile 中加入,这样每次登录就自动切换到gcc-9的环境了
指定cmake时的gcc版本
执行cmake生成Makefile时,cmake会去发现系统上的gcc
我实际使用时,在centos上系统存在gcc时,通过
1 | scl enable devtoolset-9 bash |
切换gcc版本后,使用cmake生成Makefile会出现仍然使用系统默认gcc的情况
解决方式:切换gcc版本后指定CC和CXX环境变量指向需要使用的gcc和g++,再执行cmake
1 | export CC=`which gcc` |