rust docker交叉编译静态单体执行文件
1. 这是有人专门做好对编译对应平台的docker image(https://github.com/messense/rust-musl-cross).Rust toolchainCross Compile TargetDocker Image Tagstablex86_64-unknown-linux-muslx86_64-muslstablei686-unknown-linux-musli6
1. 这是有人专门做好对编译对应平台的docker image(https://github.com/messense/rust-musl-cross).
Rust toolchain | Cross Compile Target | Docker Image Tag |
---|---|---|
stable | x86_64-unknown-linux-musl | x86_64-musl |
stable | i686-unknown-linux-musl | i686-musl |
stable | arm-unknown-linux-musleabi | arm-musleabi |
stable | arm-unknown-linux-musleabihf | arm-musleabihf |
stable | armv7-unknown-linux-musleabihf | armv7-musleabihf |
stable | armv5te-unknown-linux-musleabi | armv5te-musleabi |
stable | mips-unknown-linux-musl | mips-musl |
stable | mipsel-unknown-linux-musl | mipsel-musl |
用法:
(1)先拉取对应镜像 docker pull messense/rust-musl-cross:armv7-musleabihf
(2)为了方便使用,把docker命令做成别名
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src messense/rust-musl-cross:armv7-musleabihf'
(3)这样就可以用"rust-musl-builder"这个命令简化使用
rust-musl-builder cargo build --release
(4)上面就和使用普通cargo打包一样了,调这个命令其它就相当于挂载本地项目到容器中打包。
(5)以上镜像为了打包静态单体,镜像中已包含了(为了有这个教程,就是在centos中打包静态单体时需要openssl,解决了普通openssl的打包,发现静态打包还需要musl-gcc,而centos找了半天也没有找到,所以就想到了docker省得自己搭环境了)
- The standard
musl-libc
libraries. - OpenSSL, which is needed by many Rust applications.
2.使用另一个镜像,其实是先找到这个镜像的(https://github.com/emk/rust-musl-builder)
rust-musl-builder
uses musl-libc, musl-gcc, and the new rustup target
support. It includes static versions of several libraries:
- The standard
musl-libc
libraries. - OpenSSL, which is needed by many Rust applications.
libpq
, which is needed for applications that usediesel
with PostgreSQL.libz
, which is needed bylibpq
.
支持缓存构建:
You may be able to speed up build performance by adding the following -v
commands to the rust-musl-builder
alias:
-v cargo-git:/home/rust/.cargo/git
-v cargo-registry:/home/rust/.cargo/registry
-v target:/home/rust/src/target
You will also need to fix the permissions on the mounted volumes:
rust-musl-builder sudo chown -R rust:rust \
/home/rust/.cargo/git /home/rust/.cargo/registry /home/rust/src/target
用法(和上面的用法一样,大部分用docker交叉编译都类似,镜像里帮你做好了编译环境所需要的一起,尤其是墙的问题更坑):
1.
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder'
2. rust-musl-builder cargo build --release
PS:若在运行编译时,报权限问题,chmod 777 -R 项目路径授权。
更多推荐
所有评论(0)