Skip to content

Instantly share code, notes, and snippets.

@WesleyCh3n
Last active September 12, 2021 15:07
Show Gist options
  • Save WesleyCh3n/eb8af2c8d3b2a74e51dfe398511b2aba to your computer and use it in GitHub Desktop.
Save WesleyCh3n/eb8af2c8d3b2a74e51dfe398511b2aba to your computer and use it in GitHub Desktop.
Dockerfile of arm64/armv7 for rpi cross-compile base on `dockross`. Toolchain: https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/
FROM dockcross/base:latest
ENV DEFAULT_DOCKCROSS_IMAGE arm64-cross
ENV CROSS_TRIPLE aarch64-linux-gnu
ENV XCC_PREFIX /usr/local
ENV CROSS_ROOT ${XCC_PREFIX}/${CROSS_TRIPLE}
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc-ar \
CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \
CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \
CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \
LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld \
FC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gfortran \
RANLIB=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ranlib
ENV PKG_CONFIG_PATH /usr/lib/pkgconfig
ENV PATH ${CROSS_ROOT}/bin:$PATH
ENV LD_LIBRARY_PATH ${CROSS_ROOT}/lib:$LD_LIBRARY_PATH
ENV GCCPATH ${CROSS_ROOT}/libexec/gcc/aarch64-linux-gnu/8.3.0
ENV ARFLAGS="--plugin $GCCPATH/liblto_plugin.so"
ENV RANLIBFLAGS="--plugin $GCCPATH/liblto_plugin.so"
COPY cross-pi-gcc-8.3.0-64 ${CROSS_ROOT}
# Linux kernel cross compilation variables
ENV CROSS_COMPILE ${CROSS_TRIPLE}-
ENV ARCH arm64
FROM dockcross/base:latest
ENV DEFAULT_DOCKCROSS_IMAGE wesleych3n/pi-cross:armv7-8.3.0
ENV CROSS_TRIPLE arm-linux-gnueabihf
ENV XCC_PREFIX /usr/local
ENV CROSS_ROOT ${XCC_PREFIX}/${CROSS_TRIPLE}
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc-ar \
CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \
CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \
CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \
LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld \
FC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gfortran \
RANLIB=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc-ranlib
ENV PKG_CONFIG_PATH /usr/lib/pkgconfig
ENV PATH ${CROSS_ROOT}/bin:$PATH
ENV LD_LIBRARY_PATH ${CROSS_ROOT}/lib:$LD_LIBRARY_PATH
ENV GCCPATH ${CROSS_ROOT}/libexec/gcc/${CROSS_TRIPLE}/8.3.0
ENV ARFLAGS="--plugin $GCCPATH/liblto_plugin.so"
ENV RANLIBFLAGS="--plugin $GCCPATH/liblto_plugin.so"
COPY cross-pi-gcc-8.3.0-2 ${CROSS_ROOT}
# Linux kernel cross compilation variables
ENV CROSS_COMPILE ${CROSS_TRIPLE}-
ENV ARCH arm
@WesleyCh3n
Copy link
Author

  • Mount opt and build lib
armv7-cross -a "-v $PWD/armv7/opt:/opt" bash
arm64-cross -a "-v $PWD/arm64/opt:/opt" bash
  • buid wesleych3n/ntu-iot-node
armv7-cross -a "-v $PWD/armv7/opt/opencv/lib/pkgconfig/opencv4.pc:/usr/lib/pkgconfig/opencv4.pc:ro\
    -v $PWD/armv7/opt:/opt" bash
arm64-cross -a "-v $PWD/arm64/opt/opencv/lib/pkgconfig/opencv4.pc:/usr/lib/pkgconfig/opencv4.pc:ro\
    -v $PWD/arm64/opt:/opt" bash

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment