一个简单的 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 从哪里查找库吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.