os/Dockerfile
2025-02-08 20:36:35 +01:00

64 lines
1.9 KiB
Docker

FROM ubuntu:22.04
ARG BINUTILS_VERSION=2.44
ARG GCC_VERSION=14.2.0
RUN apt-get update && apt-get install -y \
build-essential \
bison \
flex \
grub-pc-bin \
grub-efi-amd64-bin \
mtools qemu-system-x86 \
grub2 \
libgmp3-dev \
libmpc-dev \
libmpfr-dev \
libisl-dev \
libelf-dev \
wget
# Set environment variables
ENV PREFIX=/usr/local/opt/cross
ENV TARGET=i686-elf
ENV PATH="$PREFIX/bin:$PATH"
# Create build directory
WORKDIR /build
# Download and extract sources
RUN wget https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz && \
wget https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz && \
tar -xzf binutils-${BINUTILS_VERSION}.tar.gz && \
tar -xzf gcc-${GCC_VERSION}.tar.gz
RUN mkdir -p $PREFIX
# Build Binutils
RUN mkdir binutils-build && \
cd binutils-build && \
../binutils-${BINUTILS_VERSION}/configure --target=${TARGET} --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror && \
make && \
make install
# Build GCC
RUN mkdir gcc-build && \
cd gcc-build && \
../gcc-${GCC_VERSION}/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers --disable-hosted-libstdcxx && \
make all-gcc && \
make all-target-libgcc && \
make install-gcc && \
make install-target-libgcc
# Clean up
RUN rm -rf /build
# Check if the installation is successful
RUN $PREFIX/bin/$TARGET-gcc --version
RUN apt-get install -y xorriso
VOLUME /var/lib/deados
WORKDIR /var/lib/deados