引入交叉编译配置

This commit is contained in:
2025-02-23 23:51:06 +08:00
parent 67f9114767
commit ab259422f0
2 changed files with 53 additions and 1 deletions

3
.cargo/config.toml Normal file
View File

@@ -0,0 +1,3 @@
[target.aarch64-linux-android]
linker = "aarch64-linux-android35-clang"
ar = "llvm-ar"

View File

@@ -1,3 +1,52 @@
# 零点传输协议 # 零点传输协议
用于控制数据包如何交换工作在TCP协议栈之上。 用于控制数据包如何交换工作在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
~~~