前言

  一些论文的开源代码在编译的过程中甚至某些开源库在编译过程中会报错,导致无法使用,查看了原因日志后定在了由于g++5和g++7版本不兼容的缘故。
  为此,博主可谓是伤透了脑筋,毕竟有些论文还是g++5版本,所以版本共存问题成为了本博文的主要内容之一。但是在安装过程中发现Ubuntu16.04的apt包下没有g++7,所以本博文安装g++7也成为主要内容之一。

安装g++7

  首先我们看看我们的系统自带的g++版本:

g++ --version

  然后返还结果是:

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  本次要进行安装g++7,首先我们一般会考虑用如下命令查找看看原本的Ubuntu16.04下有没有g++7的包。

  从图中可以看见,并没有g++版本7,所以我们需要另一个新源才能下载。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

  结果输出如下:

➜  ~  sudo add-apt-repository ppa:ubuntu-toolchain-r/test
[sudo] tqw 的密码: 
 Toolchain test builds; see https://wiki.ubuntu.com/ToolChain

 更多信息: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
按回车继续或者 Ctrl+c 取消添加

gpg: 钥匙环‘/tmp/tmpnfjlv61w/secring.gpg’已建立
gpg: 钥匙环‘/tmp/tmpnfjlv61w/pubring.gpg’已建立
gpg: 下载密钥‘BA9EF27F’,从 hkp 服务器 keyserver.ubuntu.com
gpg: /tmp/tmpnfjlv61w/trustdb.gpg:建立了信任度数据库
gpg: 密钥 BA9EF27F:公钥“Launchpad Toolchain builds”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1  (RSA: 1)
OK

  紧接着,我们更新源包,然后再安装g++7,命令如下所示:

sudo apt-get update
sudo apt-get install -y g++-7

g++版本共存

  然后我们查看一下,如今已安装的g++和gcc的版本。

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

  结果如下:

➜  ~ ls /usr/bin/gcc*
/usr/bin/gcc    /usr/bin/gcc-ar    /usr/bin/gcc-nm    /usr/bin/gcc-ranlib
/usr/bin/gcc-5  /usr/bin/gcc-ar-5  /usr/bin/gcc-nm-5  /usr/bin/gcc-ranlib-5
/usr/bin/gcc-7  /usr/bin/gcc-ar-7  /usr/bin/gcc-nm-7  /usr/bin/gcc-ranlib-7
➜  ~ ls /usr/bin/g++*
/usr/bin/g++  /usr/bin/g++-5  /usr/bin/g++-7

  紧接着进行设置,让g++5和g++7可以输入命令就能切换,另外说明的是安装g++对应就有安装gcc,所以gcc也需要配置,不然编译链接版本不对应会产生问题。命令如下:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50  
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 50

  然后查看我当前的版本号与切换下一个版本号:

gcc --version
g++ --version

  结果:

➜  ~ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
➜  ~ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  现在我们要做的是把版本5切换到版本7,从提供的列表中输入选择号就是切换的版本,博主输入的是2,如下命令:

sudo update-alternatives --config g++
sudo update-alternatives --config gcc

  结果如下:

➜  ~ sudo update-alternatives --config g++
有 2 个候选项可用于替换 g++ (提供 /usr/bin/g++)。

  选择       路径          优先级  状态
------------------------------------------------------------
* 0            /usr/bin/g++-5   50        自动模式
  1            /usr/bin/g++-5   50        手动模式
  2            /usr/bin/g++-7   50        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:2
update-alternatives: 使用 /usr/bin/g++-7 来在手动模式中提供 /usr/bin/g++ (g++)
➜  ~ sudo update-alternatives --config gcc
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

  选择       路径          优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-5   50        自动模式
  1            /usr/bin/gcc-5   50        手动模式
  2            /usr/bin/gcc-7   50        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:2
update-alternatives: 使用 /usr/bin/gcc-7 来在手动模式中提供 /usr/bin/gcc (gcc)

  以上所有命令运行截图如下所示:

  然后我们查看一下目前版本,命令如下:

gcc --version
g++ --version

  结果如下:

➜  ~ g++ --version
g++ (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

➜  ~ gcc --version
gcc (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐