# 零点传输协议 用于控制数据包如何交换,工作在TCP协议栈之上。 ## 交叉编译 由于LingTransmit依赖于openssl,所以你需要为目标操作系统交叉编译openssl。 以Android aarch64为例 ~~~ bash 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找到需要使用的库。 ~~~ bash 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* 并添加: ~~~ toml [target.aarch64-linux-android] linker = "aarch64-linux-android-clang" ar = "llvm-ar" ~~~ 最后,即可清理缓存并重新构建 ~~~ bash cargo clean cargo build --release --target=aarch64-linux-android ~~~