Files
LingTransmit/README.md

52 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 零点传输协议
用于控制数据包如何交换工作在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/aarch64no-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
~~~