在ubuntu 18.04上交叉编译rust 程序

在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"
  2. 编译
    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了.