bd48a6905629132b5e8370f65d9d145b861951d5
零点传输协议
用于控制数据包如何交换,工作在TCP协议栈之上。
交叉编译
由于LingTransmit依赖于openssl,所以你需要为目标操作系统交叉编译openssl。
以Android aarch64为例
git clone https://github.com/openssl/openssl.git
cd openssl
export ANDROID_NDK_HOME=/home/ling/Android/Sdk/ndk/28.0.12916984/
export TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
export PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
# 生成构建清单,指定安装目录为/home/ling/Android/openssl/aarch64,no-shared表示构建静态库
./Configure android-arm64 -D__ANDROID_API__=34 --prefix=/home/ling/Android/openssl/aarch64 -DOPENSSL_STATIC=1 no-shared
make -j15
make install
然后需要设置一些环境变量,使得Cargo找到需要使用的库。
export OPENSSL_DIR=/home/ling/Android/openssl/aarch64
export OPENSSL_LIB_DIR=$OPENSSL_DIR/lib
export OPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include
# 允许 pkg-config 跨平台查找
export PKG_CONFIG_ALLOW_CROSS=1
export PKG_CONFIG_PATH=$OPENSSL_DIR/lib/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot
然后,在项目根目录创建 .cargo/config.toml 并添加:
[target.aarch64-linux-android]
linker = "aarch64-linux-android-clang"
ar = "llvm-ar"
最后,即可清理缓存并重新构建
cargo clean
cargo build --release --target=aarch64-linux-android
Description
Languages
Rust
100%