c c++交叉编译,环境docker

416 阅读1分钟

前言

终于终于终于搞会了交叉编译

前文

了解docker

docker:github.com/AlanSean/bo…

编写Dockerfile

FROM multiarch/crossbuild
RUN cd /
RUN git clone https://github.com/AlanSean/docker-crossbuild-cmake-tools
RUN mv docker-crossbuild-cmake-tools/ /tools

创建镜像

docker build -f Dockerfile -t crossenv . --no-cache

运行镜像

docker run --rm -it -v E:\github\cmake-backUp\mozjpeg-4.0.3:/workdir crossenv

开始编译 mozjpeg


mkdir build
mkdir build/win
mkdir build/mac
mkdir build/linux


cd build/win
//交叉编译win程序
//-D 后面跟的是参数
//-DCMAKE_TOOLCHAIN_FILE 指定编译工具链文件
//-DPNG_SUPPORTED 是mozjpeg的参数 不设置0 会报错
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=/tools/win.cmake -DPNG_SUPPORTED=0
//等待
//-- Configuring done
//-- Generating done
make

// cjpeg.exe  这个是需要动态链接库的 也就是依赖xxx.lib
// cjpeg-static.exe 不需要 便于迁移
// 其他系统平台也是同理

cd build/mac
//注意 工具链换了哦
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=/tools/osx.cmake -DPNG_SUPPORTED=0
make

cd build/linux
cmake ../.. -DPNG_SUPPORTED=0
make