引入交叉编译配置
This commit is contained in:
3
.cargo/config.toml
Normal file
3
.cargo/config.toml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[target.aarch64-linux-android]
|
||||||
|
linker = "aarch64-linux-android35-clang"
|
||||||
|
ar = "llvm-ar"
|
||||||
51
README.md
51
README.md
@@ -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/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
|
||||||
|
~~~
|
||||||
Reference in New Issue
Block a user