如何在 debian:latest docker 上安装 gcc-9

Miz*_*zux 5 c++ debian gcc docker

为了使用 C++17 包含,<filesystem>我需要gcc-9在我的 debian docker 中安装包。

默认情况下debian:latest(又名 10 或 buster)将从8.3.0常规发行版存储库安装 gcc 。

是否有任何 PPA、测试存储库等,我可以在其中轻松安装gcc-9(或更高版本)包(即不是从源代码构建它)

谢谢 !

注意:需要 gcc-9 才能有良好的 C++17<filesystem>支持。
GCC 9 发行说明:

使用中的类型和函数现在不需要与 -lstdc++fs 链接。

源代码:https : //gcc.gnu.org/gcc-9/changes.html

注意 2:CMake 3.16* 不支持任何 cxx_filesystem 编译器功能 AFAIK。

注意3:你可以在这里找到日志:https : //github.com/Mizux/KalistoUnpacker/runs/642516660? check_suite_focus=true

Bot*_*tje 7

从一个全新的开始debian:10

echo 'deb http://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/testing.list
apt update
cat <<EOF > /etc/apt/preferences.d/pin
Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650
EOF

apt install -qq -y -t testing build-essential
Run Code Online (Sandbox Code Playgroud)

产量:

# g++ -v
gcc version 9.3.0 (Debian 9.3.0-11) 
Run Code Online (Sandbox Code Playgroud)


Miz*_*zux 6

在我的 Dockerfile 中,我做了:

FROM debian:latest AS env
...
RUN echo 'deb http://deb.debian.org/debian testing main' >> /etc/apt/sources.list
RUN apt update -y
RUN apt install -y gcc
Run Code Online (Sandbox Code Playgroud)

注意:我在安装后添加了这些行,build-essential所以从技术上讲,容器安装了“默认”gcc,然后它由测试仓库中的一个更新......

注意2:使用RUN gcc --version我有gcc (Debian 9.3.0-11) 9.3.0:D