只在Ubuntu 18.04上安装gcc-8?

我刚刚安装了Lubuntu 18.04 LTS。有两个选项可以安装gcc:gcc-7gcc-8。这两个选项都可以通过apt-get install直接安装。
即使我已经安装了gcc-8,但当我安装其他软件包(如build-essential)时,系统仍然会安装gcc-7
既然gcc-8是更新的版本,是否有办法只安装gcc-8而不安装gcc-7呢?

1只是不要安装build-essential,而是直接安装它所依赖的其他软件包?dpkg-dev g++-8 gcc-8 libc6-dev libc-dev make - muru
gcc-8需要gcc-7。注意:您可以同时安装任意数量的gcc/g++版本。Bionic extras: g++-4.8 g++-5 g++-6 g++-8 ... ... g++-7/gcc-7是系统编译器。旧版本用于构建一些较旧的应用程序。 - Knud Larsen
1@KnudLarsen "gcc-7 is required by gcc-8" 什么? - ZachB
3个回答

`gcc-7`和`gcc-8`可以很好地共存。
我建议安装`gcc-7`,以满足`build-essential`和其他依赖包的需求,并将`gcc-8`配置为默认的gcc安装版本。
使用update-alternatives命令自动将`gcc`重定向到`gcc-8`。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8

这样做将使您能够方便地使用最新版本的gcc,并且仍然可以直接调用gcc-7或gcc-8。
如果您以后想更改默认的gcc版本,请运行sudo update-alternatives --config gcc。它会出现一个类似于下面的提示,让您选择要使用的版本:
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path            Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-8   800       auto mode
  1            /usr/bin/gcc-7   700       manual mode
  2            /usr/bin/gcc-8   800       manual mode

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

较高优先级是由 update-alternatives 自动选择的那个。

这应该是被接受的答案。 - Void Star


1这并没有回答问题。这些信息可能与一个完全不同的问题相关,但那个问题已经有了答案:https://askubuntu.com/q/466651/113421。 - Ruslan
2@Ruslan 谢谢你的反馈。帮助100个谷歌员工比帮助一个提问者更重要哦;-) - Ciro Santilli OurBigBook.com
@user1241241 谢谢!我很高兴你喜欢我的低调个人资料。 - Ciro Santilli OurBigBook.com
有gcc-9,但没有gcc-8。谢谢。 - daparic

去下载没有版本号的gcc软件包(cpp/gcc/g++/g++multilib等),版本号为8,并使用dpkg -i *.deb命令进行安装。确保首先安装了带有-8后缀的相应软件包。

http://deb.debian.org/debian/pool/main/g/gcc-defaults/

原因:
build-essential和许多其他软件包依赖于没有版本号的软件包(软件包名称中没有版本号),例如gcc,g++等等,而这些无版本号的软件包又依赖于有版本号的软件包(软件包名称包含版本号作为后缀),例如gcc-X,g++-X。
一个带有软件包版本8.~的无版本号软件包gcc依赖于gcc-8,而官方Ubuntu 18.04存储库中的gcc软件包带有软件包版本7.~,而gcc-7又依赖于gcc-7。
这些未版本化的gcc软件包不会安装任何内容,只是作为对版本化的gcc软件包的依赖声明。
来自Debian 10(代号buster)的未版本化软件包被标记为8.~。您可以放心地手动安装它们,而依赖的版本化软件包仍然来自您的官方Ubuntu存储库,所以完全安全。