Files
operating-system/cross-compiler-image/Dockerfile

68 lines
2.9 KiB
Docker

FROM ubuntu:latest
RUN apt-get update
COPY packages.txt .
RUN apt-get install -y --no-install-recommends --no-install-suggests $(cat packages.txt)
COPY gnu-keyring.gpg /gnu-keyring.gpg
RUN gpg --import /gnu-keyring.gpg
#ARG BINUTILS_MIRROR="https://ftp.gnu.org/gnu/binutils/"
ARG BINUTILS_MIRROR="https://gnuftp.uib.no/binutils/"
ARG BINUTILS_NAME="binutils-2.42"
ARG BINUTILS_ARCHIVE=${BINUTILS_NAME}".tar.gz"
#ARG GCC_MIRROR="https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/"
ARG GCC_MIRROR="https://gnuftp.uib.no/gcc/gcc-14.1.0/"
ARG GCC_NAME="gcc-14.1.0"
ARG GCC_ARCHIVE=${GCC_NAME}".tar.gz"
ARG PREFIX=/opt/cross/
ARG TARGET=i686-elf
ENV PATH=${PREFIX}bin:${PATH}
WORKDIR build
# download and build gcc and binutils source
RUN set -x \
&& wget --no-verbose ${BINUTILS_MIRROR}${BINUTILS_ARCHIVE} \
&& wget --no-verbose ${BINUTILS_MIRROR}${BINUTILS_ARCHIVE}.sig \
&& gpg --verify "${BINUTILS_ARCHIVE}.sig" \
&& mkdir binutils \
&& tar -xf ${BINUTILS_ARCHIVE} -C binutils \
&& mkdir binutils-build \
&& cd binutils-build \
&& ../binutils/${BINUTILS_NAME}/configure \
--target=$TARGET \
--prefix=$PREFIX \
--with-sysroot \
--disable-nls \
--disable-werror \
&& make -j 8 \
&& make install \
&& rm -rf binutils-build binutils ${BINUTLS_ARCHIVE}
RUN set -x \
&& wget --no-verbose ${GCC_MIRROR}${GCC_ARCHIVE} \
&& wget --no-verbose ${GCC_MIRROR}${GCC_ARCHIVE}.sig \
&& gpg --verify "${GCC_ARCHIVE}.sig" \
&& mkdir gcc \
&& tar -xf ${GCC_ARCHIVE} -C gcc \
&& mkdir gcc-build \
&& cd gcc-build \
&& ../gcc/${GCC_NAME}/configure \
--target=$TARGET \
--prefix=$PREFIX \
--disable-nls \
--enable-languages=c \
--without-headers \
&& make -j 8 all-gcc \
&& make -j 8 all-target-libgcc \
&& make install-gcc \
&& make install-target-libgcc \
&& rm -rf gcc-build gcc ${GCC_ARCHIVE}
WORKDIR /runtime