1. 工具简介
2. 工具使用
拉取 multiarch/crossbuild 镜像:
docker pull multiarch/crossbuild
创建工作目录和示例代码:
mkdir -p ~/crossbuild-test
cd ~/crossbuild-test
创建 helloworld.c :
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
使用 Docker 在 WSL 中进行编译:
2.1 x86_64 架构
运行 Docker 指令:
docker run --rm -v $(pwd):/workdir multiarch/crossbuild make helloworld
验证生成的二进制文件:
file helloworld
./helloworld
2.2 ARM 架构
2.2.1 ARM 32
运行 Docker 指令:
docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=arm-linux-gnueabi multiarch/crossbuild make helloworld
验证生成的二进制文件:
file helloworld
2.2.1 ARM 64
运行 Docker 指令:
docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=aarch64-linux-gnu multiarch/crossbuild make helloworld
验证生成的二进制文件:
file helloworld
2.3 MIPS 架构
运行 Docker 指令:
docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=mipsel-linux-gnu multiarch/crossbuild make helloworld
验证生成的二进制文件:
file helloworld
3. 实际使用
3.1 预备工作
确保 crossbuild-master 和 bzip2 源码目录结构正确:
C:\Users\22845\Desktop\crossbuild-master
├── source
│ └── bzip2-master
│ ├── Makefile
│ └── (other bzip2 source files)
确保 Docker 和 multiarch/crossbuild 镜像可用:
docker --version
docker pull multiarch/crossbuild
在 WSL 中进入项目目录:
cd /mnt/c/Users/22845/Desktop/crossbuild-master/source/bzip2-master
确认 Makefile 存在:
ls -l Makefile
3.2 项目编译
3.2.1 x86_64 架构
运行 Docker 指令:
make clean
docker run --rm -v $(pwd):/workdir multiarch/crossbuild make
验证生成的二进制文件:
file bzip2
3.2.1 ARM 架构
运行 Docker 指令:
make clean
docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=arm-linux-gnueabi multiarch/crossbuild make
验证生成的二进制文件:
file bzip2