gcc-11何时会出现在Ubuntu软件仓库中?

41

昨天终于发布了GCC 11.1版。然而,现在它只能从源代码构建,所以我想知道我们何时可以通过apt获取它?


2
现在已默认添加:https://packages.ubuntu.com/hirsute/gcc-11 已将其添加到我的megatable中:https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu/1163021#1163021 - Ciro Santilli OurBigBook.com
6
我投票关闭此问题,因为它应该在 https://askubuntu.com/ 上发布。 - bad_coder
快进1年,新的LTS ubuntu:jammy 配备了 gcc-11g++-11(请参见 https://packages.ubuntu.com/search?keywords=gcc-11)。 - mirekphd
4个回答

60
sudo apt install build-essential manpages-dev software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update && sudo apt install gcc-11 g++-11

然后使用 update-alternatives 来设置默认的 gcc 版本...

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9  --slave /usr/bin/cpp cpp /usr/bin/cpp-9 && \

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11  --slave /usr/bin/cpp cpp /usr/bin/cpp-11;

要检查默认的gcc版本,您可以运行以下命令进行抽样检查设置。如果它们显示正确的结果,则其余部分都没有问题...

gcc --version;g++ --version;gcov --version;

要重新配置为任何先前的gcc版本...

sudo update-alternatives --config gcc

您可以在任何版本的Ubuntu上执行此操作,...尽情享受吧!

以下是我同时拥有的6个不同的gcc版本,其中默认版本为gcc-11:

$ sudo update-alternatives --config gcc
There are 6 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-11   1010      auto mode
  1            /usr/bin/gcc-10   1000      manual mode
  2            /usr/bin/gcc-11   1010      manual mode
  3            /usr/bin/gcc-5    40        manual mode
  4            /usr/bin/gcc-7    700       manual mode
  5            /usr/bin/gcc-8    800       manual mode
  6            /usr/bin/gcc-9    900       manual mode

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

3
没问题,这就是为什么我写了它。也许你应该详细解释一下以获得更多帮助。 - DanglingPointer
2
“不起作用”的评论可能是由于在添加存储库后缺少sudo apt update引起的。 - Drew Dormann
12
如何修复错误:alternative cpp 不能成为 gcc 的从属,因为它是主要的替代品? - johndpope
6
运行 sudo update-alternatives --config cpp 命令,检查它是否已经配置了不同的选项,如果没有,则使用 sudo update-alternatives --remove-all cpp 删除它。然后,如果您已经运行了我发布的gcc命令,则需要将其删除,以便重新开始,然后重新复制并粘贴上面的命令,以适当地设置所有从属关系,包括cpp。 - DanglingPointer
1
我遇到了与@johndpope相同的错误:update-alternatives: error: alternative cpp can't be slave of gcc: it is a master alternative - thargy
显示剩余10条评论

16

在Ubuntu 20.04上,我按照这里的说明进行了操作:

操作步骤如下:

  1. 通过向 /etc/apt/sources.list 添加一行来更新列出的镜像站点,例如:

    sudo add-apt-repository 'deb http://mirrors.kernel.org/ubuntu hirsute main universe'

    从列表中选择一个基于你所在位置的镜像站点。由于我位于北美,我选择了 kernel 镜像站点。

  2. sudo apt-get update

  3. sudo apt-get install gcc-11

完成后,which gcc-11 应该会输出 gcc-11 的路径。在我的机器上,它是:

which gcc-11

生成:/usr/bin/gcc-11


8
非常小心,不要运行“apt-get upgrade”,否则你的20.04会变成21.04。在安装gcc-11后,更安全的方法是删除sources.list中的行,这样你就不会意外升级到新的Ubuntu发行版,并可能需要一段时间来完成所有软件包的更新。请注意不要改变原文的意思。 - Shawn Shaw
4
这是否完全安全?如果添加毛茸茸的存储库使GCC-11可用,难道我们不应该期望它会提供许多其他更新的软件包吗?这些软件包可能与20.04不兼容。 - Silicomancer
8
这个答案并不安全,因为它可能会在 Focal 中创建一堆本应属于 Focal 而不是 Hirsuite 的软件包。如果你想在 Focal 中使用 Hirsuite 版本的软件(例如 dwarves 或 libbpf 用于构建最新内核),最好使用 Focal 中的 GCC 和 C 库重新构建它们。否则就升级到 Hirsuite 或更高版本。 - DanglingPointer
4
是的,那绝对毁了我的发行版 >D - Namal
注意:双位数的踩票数(因为它会导致混合版本系统...) - mirekphd

7

Casachii的指示对我有用,但是有一个小问题。如果你使用casachii的指示自行构建GCC时遇到任何问题,例如构建错误报告缺少GMP、MPFR、MPC等,则只需执行以下操作:

从GCC目录(刚创建的“build”目录的父级目录)中运行:

./contrib/download_prerequisites

然后,当它完成后,运行以下内容:

./configure

最后按照casachii的指示返回到您的构建目录并构建GCC 11.x

cd build
../configure --enable-multilib && make && sudo make install

这将需要相当长的时间。顺便说一下 - 我本来想在casachii非常有帮助的答案下添加评论,但我刚刚创建了这个帐户,显然我甚至没有足够的凭据来发表评论。

7

目前我们没有关于何时会发布GCC 11.1的APT版本的信息。以下是一步步的构建说明,您可以尝试跟随:

您可以访问https://gcc.gnu.org/mirrors.html,选择最接近您的镜像站点,下载gcc-11.1.0.tar.gz的源代码。

然后,请确保已安装构建系统:

sudo apt install gcc g++ make bison binutils gcc-multilib

是的,构建gcc需要gcc。

然后,解压tarball文件:

cd Downloads # replace with your download location
tar -xzvf gcc-11.1.0.tar.gz
cd gcc-11.1.0

最后一步是实际构建它:
mkdir build
cd build
../configure --enable-multilib && make && sudo make install

就这些!您现在已经在Ubuntu中安装了GCC 11.1。


我尝试了类似的方法,但在链接libstdc++.so.6时遇到了一些问题。 - gavrilikhin.d
我忘了提到对于 --enable-multilib 选项,您必须拥有 multilib。使用 sudo apt install gcc-multilib 安装它。我也已经将其添加到答案中了。 - user15770830
2
这可能需要很长时间来构建,取决于计算机的性能。 - Namal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接