Rust 在linux环境下 编译 .so

Rust 在linux环境下 编译 .so 提供给 android 使用

环境 windows
一.windows商店下载 ubuntu 20.04
二.获取root权限 
sodu su
三.更换镜像文件(https://www.jianshu.com/p/e08910410796)
清华镜像地址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
1.备份一下Ubuntu 原来的源地址列表文件。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.cp


2.打开sources.list 

vim /etc/apt/sources.list


3.替换里面镜像文件
4、修改完成后保存文件,并执行下列语句。

# 刷新列表

sudo apt-get update

# 更新已安装的包

sudo apt-get upgrade


四.安装rust环境(https://blog.csdn.net/qq_41879343/article/details/104802548)
1.加入中国科技大学网络镜像代理(仅仅在本次终端生效,切换终端,仍然需要再次执行一次)

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup


2.安装rust

curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env

五.安装编译GCC工具链(一定要更换镜像文件,否则很慢,有些文件 无法下载)

sudo apt-get install build-essential 


六.配置 编译链 

vim ~/.cargo/config
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
#arm64   == arm64-v8a
[target.aarch64-linux-android]
ar = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"
linker = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang"
#arm == armeabi-v7a
[target.armv7-linux-androideabi]
ar = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
linker = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang"
#x86 == x86
[target.i686-linux-android]
ar = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar"
linker = "/mnt/e/bianyi/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang"

#以上配置根据需求配置

七.将编译链加入rustup(根据 需求加入)

rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android

八.编译
1,进入到rust 项目目录下(编译不同 cpu )

cargo build --target aarch64-linux-android --release
cargo build --target armv7-linux-androideabi --release
cargo build --target i686-linux-android --release

 

你可能感兴趣的:(Android,linux,rust,android)