g++(gcc)11可以在Debian Bullseye上使用吗?

12

g++(gcc)11.1能在Debian Bullseye上使用吗?

即将发布的Debian 11(bullseye),我想使用一个支持C++20和模块的编译器。

Debian 11目前拥有gcc10.2和clang 11。clang 11具有一些C++20支持。

Debian是否比较保守,因为该操作系统使用gcc,而不是clang?


4
Debian 11硬冻结于2021-03-12,正好处于clang-11gcc-11发布之间,因此这可能只是时间上的简单问题。 - user4442671
2
如果没有其他选择,你可能可以从源代码构建编译器。 - eerorika
@Frank 谢谢。可能是的,但在这个问题提出的时候,Debian 11 正处于全面冻结阶段(截至 2021 年 7 月 17 日)。 - user2534096
1
@Coder 我不确定我理解了。重要的是,当clang-11发布时,Debian 11没有被冻结,但当gcc-11被冻结时,它已经被冻结了,这对于差异似乎是一个合理的解释。 - user4442671
1
@Frank 关于你说的“不确定我是否理解”,当你说“时间问题”时,我理解为你认为Debian可能会在Debian 11中添加gcc-11,因此我对此感到好奇,考虑到现在已经进入了全面冻结阶段。然而,我现在明白了你的意思,感谢你的澄清。 - user2534096
@程序员,别担心,我能理解我的评论可能会被误解。 - user4442671
5个回答

5

由于下一段中的链接已过时,因为Ubuntu 19.04已经到达了生命周期的尽头,我建议阅读本答案的读者参考更通用的情况,适用于所有基于Debian的操作系统中使用gcc的用户。有关在基于Debian的操作系统中安装非标准版本的gcc和g++的更多信息,请参阅此答案


这里是从默认的Ubuntu软件源准备好在Debian Bullseye中安装的g++-11,该软件包的依赖关系列在this page上。

打开终端并输入:

cd ~/Desktop/
wget http://security.ubuntu.com/ubuntu/pool/universe/g/gcc-11/g++-11_11.1.0-1ubuntu1~21.04_amd64.deb
apt install --simulate ./g++-11_11.1.0-1ubuntu1~21.04_amd64.deb

最后的命令将返回一个缺失依赖项的列表,它可以在此网页中找到。在手动下载并安装所有缺失的依赖包之后,安装g++-11包的命令如下:
sudo apt install ./g++-11_11.1.0-1ubuntu1~21.04_amd64.deb 

使用 apt install --simulate 命令将在开始时生成未满足的依赖错误,因为Debian Bullseye默认软件源中不包含gcc-11依赖包(最新版本是gcc-10),但它们会显示一列缺失的依赖包。如果您进行迭代处理,您将能够安装所有这些缺失的依赖包,以便最后可以无错误地运行 sudo apt install ./g++-11_11.1.0-1ubuntu1~21.04_amd64.deb


security.ubuntu.com/ubuntu/pool/universe/g/...没有ARM64的软件包,为什么呢?我以为ARM64现在已经足够主流了。我想在树莓派上安装一个较新版本的GCC... - Violet Giraffe
1
或许ARM64包在某些ARM处理器型号上仍存在一些错误。 - karel

3

g++-11,gcc-11可以成功安装到“Debian 11 Bullseye”中。

安装g++-11及其依赖项...

cpp-11_11.1.0-4_amd64.deb
g++-11_11.1.0-4_amd64.deb
gcc-11_11.1.0-4_amd64.deb
gcc-11-base_11.1.0-4_amd64.deb
libasan6_11.1.0-4_amd64.deb
libatomic1_11.1.0-4_amd64.deb
libcc1-0_11.1.0-4_amd64.deb
libgcc-11-dev_11.1.0-4_amd64.deb
libgcc-s1_11.1.0-4_amd64.deb
libgomp1_11.1.0-4_amd64.deb
libitm1_11.1.0-4_amd64.deb
liblsan0_11.1.0-4_amd64.deb
libquadmath0_11.1.0-4_amd64.deb
libstdc++-11-dev_11.1.0-4_amd64.deb
libstdc++6_11.1.0-4_amd64.deb
libtsan0_11.1.0-4_amd64.deb
libubsan1_11.1.0-4_amd64.deb

g++-11 https://packages.debian.org/experimental/g++-11

安装:cd Downloads/# apt install ./*


好的。非常感谢。您认为相比于其他“实验性”软件包,这个软件包更加“稳定/可靠”,因为gcc-11本身是一个官方的“稳定”版本吗? - user2534096
2
这个gcc-11版本已经在Ubuntu上测试了一段时间,而且gcc的发布通常都是稳定的。与其他实验性软件相比,gcc-11是一个例外,因为它依赖于早期的glibc(libc6)版本。不要期望其他“实验性”软件也能如此。 - Knud Larsen
非常准确,现在已经移至测试阶段 https://packages.debian.org/testing/g++-11 - Karanko

2

这与你的"Source.list"有关。

如果你的"source.list"是"Debian 11: 官方源列表":

(Debian 11 源与 g++(gcc)10)

deb http://deb.debian.org/debian/ bullseye main
deb-src http://deb.debian.org/debian/ bullseye main
deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib
deb http://deb.debian.org/debian/ bullseye-updates main contrib
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib

然后运行"apt-cache madison gcc"命令:
gcc | 4:10.2.1-1 | http://deb.debian.org/debian bullseye/main amd64 Packages

gcc-defaults |      1.190 | http://deb.debian.org/debian bullseye/main Sources

如果你的“Source.list”文件与以下内容相同: (Debian 11源与g++(gcc) 11)
deb http://mirrors.xmission.com/debian/ testing main non-free contrib

deb http://http.us.debian.org/debian testing main contrib non-free

deb http://ftp.us.debian.org/debian testing main non-free contrib

然后执行 "apt-cache madison gcc" 命令:
gcc | 4:11.2.0-2 | http://mirrors.xmission.com/debian testing/main amd64 Packages

gcc | 4:11.2.0-2 | http://http.us.debian.org/debian testing/main amd64 Packages

gcc | 4:11.2.0-2 | http://ftp.us.debian.org/debian testing/main amd64 Packages

如果你想把 Debian 11 中的 GCC 从版本 10 切换到版本 11

你需要在你的 Debian 的 "source.list" 文件中进行修改。

只需按以下步骤执行:

cd /etc/apt/ && sudo nano sources.list

然后,更改"source.list"并添加一个源,该源可以帮助您下载g++(gcc)11。请使用以下内容替换您的Debian源或官方源:

deb http://mirrors.xmission.com/debian/ testing main non-free contrib
deb http://http.us.debian.org/debian testing main contrib non-free
deb http://ftp.us.debian.org/debian testing main non-free contrib

看起来是一个不完整的答案。我无法理解这个答案。为了安装g++11,需要在sources.list中进行哪些更改? - Nawaz
@Nawaz 谢谢你提醒我!抱歉,也许我没有表述清楚。Debian 的官方源支持 GCC10。目前官方源不支持 GCC11。因此,如果需要 GCC11,我们需要寻找其他的 Debian 源。我现在已经补充了我的回答。这次我表述清楚了吗?谢谢! - Vittore Marcas
@anta40,能够帮助到你让我感到非常高兴。同时,谢谢你的反馈! - Vittore Marcas
@VittoreMarcas:我还没有尝试过这个,但我猜应该可以工作(或者至少我有一些想法应该尝试什么)。感谢您更新您的答案。点赞。 - Nawaz
3
这不是一个可靠的解决方案,它会将许多稳定的软件包更新为测试软件包。请勿使用此方法。 - Mecanik
显示剩余3条评论

0

-1
参考一下,在Debian 11上的gcc-12的debs列表如下。
(从DockerFile中提取,只需在终端逐个运行命令):
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/g++-12_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/cpp-12_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/gcc-12-base_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/gcc-12_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libgcc-12-dev_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libstdc++-12-dev_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libasan8_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libtsan2_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libcc1-0_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libitm1_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libatomic1_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/liblsan0_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libubsan1_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libquadmath0_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libgcc-s1_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libgomp1_12.2.0-14_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gcc-12/libstdc++6_12.2.0-14_amd64.deb

RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/glibc/libc6_2.36-9_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/glibc/libc6-dev_2.36-9_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/glibc/libc-dev-bin_2.36-9_amd64.deb
RUN wget -q -P ./locales ftp.de.debian.org/debian/pool/main/g/glibc/locales-all_2.36-9_amd64.deb
RUN wget -q -P ./locales ftp.de.debian.org/debian/pool/main/g/glibc/libc-l10n_2.36-9_all.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/glibc/libc-bin_2.36-9_amd64.deb

RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/binutils_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/binutils-common_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/libbinutils_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/binutils-x86-64-linux-gnu_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/libctf-nobfd0_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/libctf0_2.40.50.20230611-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/b/binutils/libgprofng0_2.40.50.20230611-2_amd64.deb

RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/libz/libzstd/libzstd1_1.5.4+dfsg2-5_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/j/jansson/libjansson4_2.14-2_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/g/gmp/libgmp10_6.2.1+dfsg1-1.1_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/r/rpcsvc-proto/rpcsvc-proto_1.4.3-1_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/i/isl/libisl23_0.23-1_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/m/mpclib3/libmpc3_1.1.0-1_amd64.deb
RUN wget -q -P ./deb ftp.de.debian.org/debian/pool/main/m/mpfr4/libmpfr6_4.0.2-1_amd64.deb

RUN apt-get purge -y locales
RUN apt install --simulate ./deb/*.deb
RUN cd locales && dpkg --auto-deconfigure -R --install .
RUN cd deb && dpkg --auto-deconfigure -R --install . || apt install -y locales
RUN dpkg --configure -a

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