72 lines
1.6 KiB
Docker
72 lines
1.6 KiB
Docker
# explicitly use Debian for maximum cross-architecture compatibility
|
|
FROM debian:stretch-slim
|
|
|
|
#RUN dpkg --add-architecture i386
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
gcc \
|
|
libc6-dev \
|
|
make \
|
|
# \
|
|
# gcc-multilib \
|
|
# libc6-dev-i386 \
|
|
# linux-libc-dev:i386 \
|
|
\
|
|
libc6-dev-arm64-cross \
|
|
libc6-dev-armel-cross \
|
|
libc6-dev-armhf-cross \
|
|
libc6-dev-ppc64el-cross \
|
|
libc6-dev-s390x-cross \
|
|
\
|
|
gcc-aarch64-linux-gnu \
|
|
gcc-arm-linux-gnueabi \
|
|
gcc-arm-linux-gnueabihf \
|
|
gcc-powerpc64le-linux-gnu \
|
|
gcc-s390x-linux-gnu \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /usr/src/hello
|
|
COPY . .
|
|
|
|
RUN set -ex; \
|
|
make clean all test \
|
|
TARGET_ARCH='amd64' \
|
|
CC='x86_64-linux-gnu-gcc' \
|
|
STRIP='x86_64-linux-gnu-strip'
|
|
|
|
RUN set -ex; \
|
|
make clean all \
|
|
TARGET_ARCH='arm32v5' \
|
|
CC='arm-linux-gnueabi-gcc' \
|
|
STRIP='arm-linux-gnueabi-strip'
|
|
|
|
RUN set -ex; \
|
|
make clean all \
|
|
TARGET_ARCH='arm32v7' \
|
|
CC='arm-linux-gnueabihf-gcc' \
|
|
STRIP='arm-linux-gnueabihf-strip'
|
|
|
|
RUN set -ex; \
|
|
make clean all \
|
|
TARGET_ARCH='arm64v8' \
|
|
CC='aarch64-linux-gnu-gcc' \
|
|
STRIP='aarch64-linux-gnu-strip'
|
|
|
|
# TODO TARGET_ARCH='i386' (heinous package conflicts trying to get "gcc -m32"/"gcc-multilib" to work with all the cross-compiling gccs)
|
|
|
|
RUN set -ex; \
|
|
make clean all \
|
|
TARGET_ARCH='ppc64le' \
|
|
CC='powerpc64le-linux-gnu-gcc' \
|
|
STRIP='powerpc64le-linux-gnu-strip'
|
|
|
|
RUN set -ex; \
|
|
make clean all \
|
|
TARGET_ARCH='s390x' \
|
|
CC='s390x-linux-gnu-gcc' \
|
|
STRIP='s390x-linux-gnu-strip'
|
|
|
|
RUN find \( -name 'hello' -or -name 'hello.txt' \) -exec ls -lh '{}' +
|
|
|
|
CMD ["./hello-world/hello"]
|