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