# leaf-ext **Repository Path**: vc-vpn/leaf-ext ## Basic Information - **Project Name**: leaf-ext - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 1、安装开发环境 #### 1.1、下载`git`仓库的代码 - 执行以下的命令下载`git`仓库的代码,及其依赖的其他仓库的代码: ``` git clone --recursive https://gitlab.com/vehicle-cloud/apps/vpn/leaf-ext.git ``` - 或者先下载`git`仓库的代码,再下载其依赖的其他仓库的代码: ``` git clone https://gitlab.com/vehicle-cloud/apps/vpn/leaf-ext.git cd leaf-ext git submodule update --init --recursive ``` #### 1.2、安装`rust`环境:[https://www.rust-lang.org/](https://www.rust-lang.org/) - 我们希望使用官方提供的强大的`Rust`版本管理工具`rustup`,因此我们通过`HomeBrew`安装`rustup`工具。 ``` brew install rustup-init ``` - 然后,在`bash`窗口执行`rustup`初始化命令,即可安装好`rust`环境及相关工具链。 ``` rustup-init ``` - 最后,请打开`shell`窗口,运行命令 `rustc --version`、`cargo --version`、`rustup --version`检测你的环境。如果可以看到`rustc`、`cargo`,以及`rustup`的版本信息,并且没有提示任何错误信息,则表示已经成功安装。 #### 1.2、配置`Rust`工具链的国内源 本节仅介绍如何配置`rust-static`的国内镜像源,`Cargo`资源的国内镜像源配置,我们会在下节中详细介绍。 默认情况下,`Rust`官方已经提供了工具链等资源的下载服务。 但是,`Rust`官方服务器部署在北美洲,中国大陆用户下载速度较慢,甚至反复中断下载。因此笔者建议中国大陆用户使用国内镜像源,但如果你愿意等待较长时间,可以采用默认的官方源。 目前国内`Rust`工具链镜像源有:中国科学技术大学源、上海交通大学源、清华大学源,以及`rustcc`社区源。具体配置方法请参加以下链接。 - 中国科学技术大学:[https://mirrors.ustc.edu.cn/help/rust-static.html](https://mirrors.ustc.edu.cn/help/rust-static.html) - 上海交通大学:[https://mirrors.sjtug.sjtu.edu.cn/docs/rust-static](https://mirrors.sjtug.sjtu.edu.cn/docs/rust-static) - 清华大学:[https://mirrors.tuna.tsinghua.edu.cn/help/rustup/](https://mirrors.tuna.tsinghua.edu.cn/help/rustup/) 或者使用以下的命令: ``` # 官方源 export RUSTUP_DIST_SERVER=https://static.rust-lang.org export RUSTUP_UPDATE_ROOT=https://static.rust-lang.org/rustup # 清华大学 export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup # 上海交通大学 export RUSTUP_DIST_SERVER=https://mirrors.sjtug.sjtu.edu.cn/rust-static/ export RUSTUP_UPDATE_ROOT=https://mirrors.sjtug.sjtu.edu.cn/rust-static/rustup # 中国科学技术大学 export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup ``` 注意:上述方式仅对当前`shell`窗口有效,在`shell`窗口重启后,需要重新配置才能生效。也可以将其存储到系统环境的个性化设置文件中,如` .bashrc`或`.profile`。 #### 1.3、配置`Cargo`国内镜像源 `Rust`官方默认的`Cargo`源服务器为`crates.io`,其同时也是`Rust`官方的`crate`管理仓库,放置在`github`。 `Rust`官方服务器部署在北美洲,中国大陆用户下载速度较慢,甚至反复中断下载。因此笔者建议中国大陆用户使用国内镜像源,但如果你愿意等待较长时间,可以采用默认的官方源。 提供了`Rust`工具链镜像源的站点,一般也会提供`Cargo`国内镜像源服务。目前,国内`cargo`镜像源有:中国科学技术大学源、上海交通大学源、清华大学源,以及`rustcc`社区源。 自定义`Cargo`源有两种方法,推荐使用第一种: - `$HOME/.cargo/config`:创建`$HOME/.cargo/config`文件(各操作系统及版本均大致相同),然后在文件内写入下述配置内容。其中协议推荐使用`git`,但一般各镜像源都同时支持对于`https`和 `git`协议。如果你所处的环境中不允许使用`git`协议,或者配置`git`协议后不能正常获取和编译`crate`,可以换`https`协议再试试。 ``` [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" # 指定镜像 replace-with = '镜像源名' # 如:tuna、sjtu、ustc,或者 rustcc # 注:以下源配置一个即可,无需全部 # 清华大学 [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" # 上海交通大学 [source.sjtu] registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/" # rustcc社区 [source.rustcc] registry = "https://code.aliyun.com/rustcc/crates.io-index.git" # 中国科学技术大学 [source.ustc] registry = "https://mirrors.ustc.edu.cn/crates.io-index/" # >>> 或者 <<< registry = "git://mirrors.ustc.edu.cn/crates.io-index/" ``` - 或者在项目工程结构中,与`Cargo.toml`同级目录的`.cargo`文件夹下创建`config`文件,文件配置方法和内容与第一种相同。 ### 2、编译`IOS`库 #### 2.1、安装依赖包 - 安装`lipo`:[https://github.com/TimNN/cargo-lipo](https://github.com/TimNN/cargo-lipo) ``` cargo install cargo-lipo ``` - 安装面向`IOS`目标平台的`rust complier` ``` rustup target add aarch64-apple-ios x86_64-apple-ios rustup +nightly target add aarch64-apple-ios x86_64-apple-ios ``` - 安装生成`C/C++`头文件的工具`cbindgen`:[https://github.com/eqrion/cbindgen](https://github.com/eqrion/cbindgen) ``` cargo install cbindgen ``` #### 2.2、编译库`libleaf.a` - 生成`release`版本的库 ``` make ios-rel #生成目标为: target/aarch64-apple-ios/release/libleaf.a target/aarch64-apple-ios/release/leaf.h target/x86_64-apple-ios/release/libleaf.a target/x86_64-apple-ios/release/leaf.h ``` - 生成`debug`版本的库 ``` make ios-dev #生成目标为: target/aarch64-apple-ios/debug/libleaf.a target/aarch64-apple-ios/debug/leaf.h target/x86_64-apple-ios/debug/libleaf.a target/x86_64-apple-ios/debug/leaf.h ``` ### 3、编译`Android`库 #### 3.1、安装依赖包 - 安装`Android SDK`和`Android NDK`,并修改`android/build.sh`中相关设置: ``` export ANDROID_HOME=/path/to/sdk export NDK_HOME=/path/to/sdk/ndk-bundle ``` - 安装面向`Android`目标平台的`rust complier` ``` rustup target add aarch64-linux-android x86_64-linux-android i686-linux-android armv7-linux-androideabi rustup +nightly target add aarch64-linux-android x86_64-linux-android i686-linux-android armv7-linux-androideabi ``` #### 3.2、编译库`libleaf.so` - 生成`release`版本的库 ``` make android-rel-strip #生成目标为: target/aarch64-linux-android/release/libleaf.so target/armv7-linux-androideabi/release/libleaf.so target/x86_64-linux-android/release/libleaf.so target/i686-linux-android/release/libleaf.so ``` - 生成`debug`版本的库 ``` make android-dev-strip #生成目标为: target/aarch64-linux-android/debug/libleaf.so target/armv7-linux-androideabi/debug/libleaf.so target/x86_64-linux-android/debug/libleaf.so target/i686-linux-android/debug/libleaf.so ```