本文主要介绍如何使用 Docker 搭建交叉编译环境
关于 docker 交叉编译环境,已经有人做成项目开源了。我们只需使用即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| docker pull dockcross/linux-arm64
docker run --rm dockcross/linux-arm64 > dockcross-linux-arm64 chmod +x dockcross-linux-arm64
HOST_PWD=$(echo $HOST_PWD | sed 's/\//\\\//g')
./dockcross-linux-arm64 bash -c 'echo Hello World'
./dockcross-linux-arm64 bash -c '$CC hello.c -o hello'
|
搞了半天发现不支持直接安装 arm64 的包,
麻烦的地方不在于交叉编译一个简单的hllo world 而是编译需要依赖各种 qt,
opencv, ssl 等库,手动编译这些库比较麻烦。
而这个 docker
环境也只是简单地安装了一下交叉编译器,既然如此那我为何不直接使用 vm
虚拟机或 WSL 里交叉编译。
基于 Debain 构建
既然 dockcross 不好用, 那就自己创建一个 docker 镜像好了
参考 i96751414/cross-compiler-linux-arm64, 发现这个也是基于 Debain
容器镜像
Dockerfile 如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from debian
RUN dpkg --add-architecture arm64 RUN apt-get update
RUN apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu make git file -y
RUN apt install qtbase5-dev:arm64 apt install libqt5svg5-dev:arm64 -y
RUN rm /usr/bin/qmake RUN ln -s /usr/lib/aarch64-linux-gnu/qt5/bin/qmake /usr/bin/qmake
|
执行:
1 2 3 4 5 6 7 8 9 10 11
| docker build -t aarch64 .
docker images
docker run -v /c/Users/shino/Desktop/qdraw:/mnt -it aarch64 bash
docker run -v /c/Users/shino/Desktop/qdraw:/mnt --rm -it aarch64 bash -c "cd /mnt && qmake && make -j8"
|
源文件来自于