Skip to content
On this page

在ubuntu 18.04上交叉编译rust 程序

因项目需要,将rust的一个动态库编译到arm-linux上,用的交叉编译器是 arm-none-linux-gnueabi-gcc 这里主要是记录一下过程

cargo的使用

  1. ~/.cargo/config 添加如下
[target.armv7-unknown-linux-gnueabi]
linker = "arm-none-linux-gnueabi-gcc"
  1. 编译 cargo build --target=armv7-unknown-linux-gnueabi

编译openssl

项目依赖openssl,需要交叉编译

bash
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar xzf openssl-1.0.1t.tar.gz
export MACHINE=armv7
export ARCH=arm
export CC=arm-linux-gnueabihf-gcc
cd openssl-1.0.1t && ./config shared && make && cd -

export OPENSSL_LIB_DIR=~/openssl-1.0.1t/
export OPENSSL_INCLUDE_DIR=~/openssl-1.0.1t/include
cargo build --target=armv7-unknown-linux-gnueabi --release

rust 的debug和release模式编译出来的差别巨大,一个debug版本的so文件由100M,release的则只有3M了.