在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,需要交叉编译

    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了.

本站总访问量 本站访客数人次