一个简单的 golang 项目,由于里面包含了github.com/mattn/go-sqlite3
,因此交叉编译到 Android 平台需要使用 CGO 。
使用了这样的编译方法
LD_FLAGS="-w -s -extldflags \"-static -fpic\" -buildid="
TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
CGO_ENABLED=1 \
GOARCH=arm64 \
GOOS=android \
CC=$TOOLCHAIN/bin/aarch64-linux-android32-clang \
CXX=$TOOLCHAIN/bin/aarch64-linux-android32-clang++ \
go build -a -ldflags "$LD_FLAGS" -o "$PUBLISH_DIR/binary-android-arm64-v8a" "$PROJECT_NAME"
结果提示:
aarch64-linux-android32-clang failed: exit status 1
ld: error: unable to find library -llog
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
各位大佬们,是我需要额外指定一些参数告诉 CGO 从哪里查找库吗?
1
Akitora 2022-04-12 09:07:50 +08:00
当时交叉编译 CGO 到 amd64 linux 查了半天没搞定,后来干脆直接用 wsl 来编译了。
|
2
pagxir 2022-04-12 11:56:19 +08:00 via Android
说明你用的 ndk 比较新。新的 ndk 里面已经移除了独立的 log 库。所以直接在编译脚本上把 log 的依赖移除就好了。
|