Appearance
在ubuntu 18.04上交叉编译rust 程序
因项目需要,将rust的一个动态库编译到arm-linux上,用的交叉编译器是 arm-none-linux-gnueabi-gcc 这里主要是记录一下过程
cargo的使用
- ~/.cargo/config 添加如下
[target.armv7-unknown-linux-gnueabi]
linker = "arm-none-linux-gnueabi-gcc"
- 编译 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了.