Я пытаюсь установить gcc13 и g++13 в следующий образ докера Rust.
# Builder
FROM rust:1-bookworm AS builder
RUN apt update
RUN apt install software-properties-common -y
RUN apt-get install python3-launchpadlib -y
RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y
RUN apt update
RUN apt install -y clang g++-13 gcc-13
Поскольку gcc13 изначально недоступен в Debian Bookworm, я уже пробовал использовать такой метод, как использование ppa:ubuntu-toolchain-r/test
, как описано здесь.
Однако я все еще получаю сообщение об ошибке E: Unable to locate package g++-13
и E: Unable to locate package g++-13
. Есть идеи, что я сделал не так?
К сожалению, нужно будет использовать компиляцию gcc13.
Вариант 1: Альпийский
Вы можете использовать базовый образ Alpine.
FROM rust:1-alpine
RUN apk add g++
В этом случае вы сразу получите доступ к GCC 13.
/ # gcc -v
gcc version 13.2.1 20231014 (Alpine 13.2.1_git20231014)
/ # g++ -v
gcc version 13.2.1 20231014 (Alpine 13.2.1_git20231014)
Вариант 2: установить на Debian
Если вам действительно нужен образ на основе Debian Bookworm, вы можете установить GCC 13 из исходного кода. Это немного утомительно, потому что сборка занимает некоторое время.
FROM rust:1-bookworm AS builder
RUN apt-get update && \
apt-get install -y \
build-essential \
wget \
libgmp-dev \
libmpfr-dev \
libmpc-dev
RUN wget -q https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
RUN tar -xf gcc-13.2.0.tar.gz && \
cd gcc-13.2.0 && \
./contrib/download_prerequisites
# This will cross-compile using the existing GCC on the image.
RUN cd gcc-13.2.0 && \
./configure --disable-multilib --enable-languages=c,c++ && \
make -j$(nproc) && \
make install
RUN update-alternatives \
--install /usr/bin/gcc gcc /usr/local/bin/gcc 60 \
--slave /usr/bin/g++ g++ /usr/local/bin/g++ && \
rm -rf gcc-13.2.0.tar.gz gcc-13.2.0 && \
apt purge -y gcc cpp
Есть ли конкретная причина, по которой вам нужны именно эти версии GCC? Большая часть кода должна нормально компилироваться с версией GCC в bookworm. Возможно, будет проще внести небольшие изменения в исходный код, если это необходимо, чем пытаться установить совершенно новый компилятор.