rust交叉编译linux,Fedora31 rust 交叉编译环境

原打算在Fedora31环境中打包cargo build release, 直接放到 centos7 中运行.

但实操中, 发现目标机的openssl 和glibc版本不一致, 每台主机都去独立安装的话体验十分不好.

原因大概是cargo build 使用了动态库链接, 所以生成的包, 会对环境的库有很强关联

解决方法当然还是有的, 既然不确定运行系统的动态库版本, 那么我们就来打一个静态库试试, 而且目标文件是可以在多种Linux架构下执行, 也就是所谓的交叉编译.

Step 1 musl-gcc, 交叉编译环境构建

官网介绍,目标文件支持 i386, x86_64,arm等环境

cd ~

wget https://www.musl-libc.org/releases/musl-1.1.24.tar.gz

tar zxvf musl-1.1.24.tar.gz

cd musl-1.1.24

./configure

make

sudo make install

编译好的文件存放在 /usr/local/musl/ 目录下

237c613b4985

musl-gcc

Step2 把openssl 也打进静态包

打开cargo.toml

在[dependencies]下面添加:

openssl = {version = "0.10", features = ["vendored"]}

237c613b4985

openssl

Step3 添加musl交叉编译目标

这里要用到 rustup

rustup target add x86_64-unknown-linux-musl

这里会下载一个17MB左右的包,如果下载慢,试一下DNS配置:

180.76.76.76

8.8.8.8

Step4 打包:

这里要使用第一步编译出来的musl-gcc

export PATH=/usr/local/musl/bin:$PATH

cargo build --release --target=x86_64-unknown-linux-musl

237c613b4985

目标文件

后面上传到CentOS7上是可以正常执行的 : )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值