问题描述
我想尝试 C++17 功能,并且想安装符合标准的编译器(最好是 GCC)。我对 Linux 和 Ubuntu 完全陌生,我根本不了解很多。
我试图追踪 https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test 但没有成功。首先我跑:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
据我了解,这个命令会安装一些密钥。接下来我尝试了:
sudo add-apt-repository ppa:ubuntu-toolchain-r/gcc-7
结果返回:
Error: 'ppa:ubuntu-toolchain-r/gcc-7' invalid
接下来我尝试安装 clang 开发分支:
apt-get install clang-4.0 lldb-4.0
它给了我
E: Unable to locate package clang-4.0
E: Couldn't find any package by glob 'clang-4.0'
E: Couldn't find any package by regex 'clang-4.0'
E: Unable to locate package lldb-4.0
E: Couldn't find any package by glob 'lldb-4.0'
E: Couldn't find any package by regex 'lldb-4.0'
这一切意味着什么?怎么了?
最佳思路
适用于所有 Ubuntu 版本的超大型 GCC 表:How do I use the latest GCC on Ubuntu?
Ubuntu 16.04 及以下版本
有一个官方的 Ubuntu GCC 测试 PPA,应该优先使用:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-7 g++-7
gcc-7 --version
GCC 7 已在 May 2017 中发布,因此对于 17.04 主版本来说为时已晚。
PPA 目前没有适用于较新版本的 GCC,例如16.10,仅 LTS 12.04、14.04 和 16.04,如可以在以下位置看到:https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test | snapshot。我记得之前有17.04,但现在被删除了?另请参阅:https://unix.stackexchange.com/questions/371737/install-gcc-7-on-ubuntu
2018 年 10 月在 Ubuntu 16.04 上测试。
Ubuntu 17.10 及以上版本
默认有 GCC 7.2 和 clang 4! https://packages.ubuntu.com/artful/gcc | https://packages.ubuntu.com/artful/clang
$ gcc --version
gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
$ clang --version
clang version 4.0.1-6 (tags/RELEASE_401/final)
GCC 8 于 16.04
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-8 g++-8
gcc-8 --version
截至 2018-11 给出 8.1.0。
Ubuntu 18.04 中的默认值:
Crosstool-NG
如果您真的对此很认真,请编译并使用您自己的 GCC 与 Crosstool-NG,如下所述:https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603#52454603
这将允许您在各种 Ubuntu 版本上使用各种 GCC 版本,而无需从您不一定信任的 PPA 下载 blob。
次佳思路
您已经可以从 this package 安装 gcc-7 和 g++-7 。
sudo add-apt-repository ppa:jonathonf/gcc-7.1
sudo apt-get update
sudo apt-get install gcc-7 g++-7