diff --git a/.github/workflows/build-gcc.yml b/.github/workflows/build-gcc.yml index 3ce6139..08ad1f7 100644 --- a/.github/workflows/build-gcc.yml +++ b/.github/workflows/build-gcc.yml @@ -48,7 +48,7 @@ jobs: pip3 install toml python3 build/build_helper.py - - name: Build for Aarch64 + - name: Build for AArch64 run: | CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ @@ -56,21 +56,21 @@ jobs: cd ZeroTierOne mv make-linux.mk.aarch64 make-linux.mk make clean - make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC="$CC -w" CXX="$CXX -w" LDFLAGS="-s" + make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC=$CC CXX=$CXX LDFLAGS="-s" cd .. cp ZeroTierOne/zerotier-one magisk/zerotier cd magisk zip -q -r ../zerotier-magisk-aarch64-gcc.zip . - - name: Build for Aarch64 with SSO + - name: Build for AArch64 with SSO run: | CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ cd ZeroTierOne make clean - make --silent -j $(nproc) ZT_STATIC=1 ZT_DEBUG=0 CC="$CC -w" CXX="$CXX -w" LDFLAGS="-s" + make --silent -j $(nproc) ZT_STATIC=1 ZT_DEBUG=0 CC=$CC CXX=$CXX LDFLAGS="-s" cd .. cp ZeroTierOne/zerotier-one magisk/zerotier @@ -86,7 +86,7 @@ jobs: cd ZeroTierOne mv make-linux.mk.arm make-linux.mk make clean - make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC="$CC $FLAGS" CXX="$CXX $FLAGS" LDFLAGS="-s" + make --silent -j $(nproc) ZT_SSO_SUPPORTED=0 ZT_STATIC=1 ZT_DEBUG=0 CC=$CC CXX=$CXX LDFLAGS="-s" cd .. cp ZeroTierOne/zerotier-one magisk/zerotier/ diff --git a/.github/workflows/build-ndk.yml b/.github/workflows/build-ndk.yml index 6af5f61..f8bd419 100644 --- a/.github/workflows/build-ndk.yml +++ b/.github/workflows/build-ndk.yml @@ -53,7 +53,7 @@ jobs: pip3 install toml python3 build/build_helper.py - - name: Build for Aarch64 + - name: Build for AArch64 run: | PATH=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH NDK_ROOT=`pwd`/android-ndk-$ndk/toolchains/llvm/prebuilt/linux-x86_64 @@ -93,11 +93,11 @@ jobs: cd ZeroTierOne mv make-linux.mk.arm.ndk make-linux.mk make clean - make -j $(nproc) ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp" DEFS="-I../libnatpmp -D__GLIBC__=0" + make --silent -j $(nproc) ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=$CC CXX=$CXX LDFLAGS="-L../libnatpmp" DEFS="-I../libnatpmp -D__GLIBC__=0" cd .. cp ZeroTierOne/zerotier-one magisk/zerotier/ - cp $NDK_ROOT/sysroot/usr/lib/arm-linux-android/libc++_shared.so magisk/zerotier/lib + cp $NDK_ROOT/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so magisk/zerotier/lib cd magisk zip -q -r ../zerotier-magisk-arm-ndk.zip . diff --git a/README.md b/README.md index bb3ac33..97faaa8 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,13 @@ ## Requirements -Built with Android NDK Toolchain, support api 28 (Android 9.0) and above. +1. a version is built with Android NDK Toolchain, supporting api 28 (Android 9.0) and above. -`make-linux.mk` in ZeroTierOne does not support armv7 (see `-mtune=`), so it only supports aarch64 here +2. another version is build with GCC toolchain, linking to Linux Syscalls statically -Unofficial planet is not supported because I don't know hot to compile rust with NDK 😭 +Unofficial planet supported; SSO (zeroidc) supported in the version built with GCC for AArch64 -Maybe we can compile with gcc cross-compiling toolchain statically, without linking system calls, but there could be potential compatibility problems. +AArch64 suppots ARMv8-A and above; Arm version supports ARMv7-A (compiling with `-march=armv7-a`) ## Installation diff --git a/README_ZH.md b/README_ZH.md index a794a51..6232686 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -10,14 +10,13 @@ ## 运行要求 -使用 NDK 编译,支持 api 28 (Android 9.0) 及以上的设备 +1. 使用 NDK 编译的版本,支持 api 28 (Android 9.0) 及以上的设备 -由于 ZeroTierOne 的 make-linux.mk 尚不支持 armv7 的设备(看似支持,但是 `-mtune=` 说明了一切),所以此处也不支持 +2. 使用 GCC 编译的版本,静态链接到 Linux Syscall,兼容性未知 -暂时不支持 SSO 即自建 planet,因为 NDK 编译 rust 还没玩明白 😭 +均支持自建 planet;GCC AArch64 有支持 SSO (zeroidc) 的版本 -有其他项目使用 gcc 交叉编译工具链静态编译,支持了自建 planet,本仓库应该会出相应版本,可能存在较大兼容性问题 -(如经过测试,必须在 root 下运行,否则 Bad System Call,可能是 `/system/lib, /vendor/lib` 没有权限访问造成的,理论上还是能够完全支持,只是怕 Android 阉割内核) +AArch64 版本支持 ARMv8-A 及以上;Arm 版本均对 ARMv7-A 进行编译 (`-march=armv7-a`) ## 安装