本文将简单介绍如何在Ubuntu中安装高版本gcc/g++,如何在多个版本gcc/g++版本直接进行切换,以及配置CMake开发环境。

1 查看现有的gcc/g++版本

如果Ubuntu中已经安装了gcc/g++,可以通过两种方式查看gcc/g++版本。

第一种方式

gcc --version
g++ --version

第二种方式

ls -l /usr/bin/gcc*
ls -l /usr/bin/g++*

2 卸载现有gcc/g++

使用以下命令卸载现有的所有的gcc/g++

sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++

如果是卸载单独版本则使用,比如卸载gcc10和g++10

sudo update-alternatives --remove gcc-10
sudo update-alternatives --remove g++-10

3 安装指定版本的gcc/g++

首先使用以下命令更新

sudo apt-get update

比如我们要安装gcc-10和g++10,则使用

sudo apt-get install gcc-10 g++-10 

如果 安装其他版本则修改后面的版本数字即可,比如gcc-9和g++9

sudo apt-get install gcc-9 g++-9

4 在多个gcc/g++版本之间进行切换

我们使用update-alternatives更新当前系统gcc/g++的软链接,就是将指定版本的gcc/g++链接到系统的gcc/g++,比如将gcc-10、g++10设置为当前系统的gcc、g++,下面命令中最后的数字为优先级,数字越大优先级越高。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100

我们也可以使用

sudo update-alternatives --config gcc

查看当前已经在update-alternatives配置的gcc版本的列表,输入您要用作默认版本的版本号,然后按Enter即可,这种方式可以交互的修改gcc、g++的版本。

There are 3 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path            Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-10   100       auto mode
  1            /usr/bin/gcc-10   100       manual mode
  2            /usr/bin/gcc-8    80        manual mode
  3            /usr/bin/gcc-9    90        manual mode

Press <enter> to keep the current choice[*], or type selection number:

5 在CMake中使用高版本的gcc/g++

如果只是想在当前会话中让CMake使用高版本的gcc/g++,则在当前会话中使用

export CC=/usr/bin/gcc
export CXX=/usr/bin/g++

设置CC和CXX的环境变量。或者直接指定gcc/g++的版本

export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10

如果想永久让CMake使用高版本的gcc/g++,则需要修改系统环境变量

nano /etc/profile

# 在/ect/profile增加下面两行
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++

# 生效
source /etc/profile

我们也可在CMakeLists.txt中显式指定C和C++编译器,下面是无缓存版本

set(CMAKE_C_COMPILER /usr/bin/gcc)
set(CMAKE_CXX_COMPILER /usr/bin/g++)

下面是强制缓存版本

set(CMAKE_C_COMPILER /usr/bin/gcc CACHE PATH "gcc" FORCE)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE PATH "gcc" FORCE)

参考链接