You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下带CGO的Android交叉编译报错,应使用何种GCC?

问题:Linux下交叉编译Android Go应用时缺失android/log.h报错

执行Go交叉编译命令:

CGO_ENABLED=1 GOOS=android GOARCH=arm64 go build .

出现如下编译错误:

gcc_android.c:6:10: fatal error: android/log.h: No such file or directory
    6 | #include <android/log.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.

请问应使用哪种GCC?


解决方法:使用Android NDK提供的交叉编译工具链

你需要使用Android NDK自带的交叉编译工具(Clang或旧版GCC),而非系统默认的GCC。Android NDK包含了Android平台完整的头文件(包括android/log.h)、库文件和适配不同架构的交叉编译器。

  • 具体操作步骤:
    1. 下载并解压Android NDK到本地路径(例如/opt/android-ndk)
    2. 针对arm64架构,指定NDK中的交叉编译器:
      • 新版NDK(r18+)推荐用Clang,路径通常为:/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android<API_LEVEL>-clang(<API_LEVEL>替换为你需要的Android API版本,比如21)
      • 若坚持用GCC,需使用NDK r17及更早版本,编译器路径为:/opt/android-ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
    3. 修改Go编译命令,通过CC变量指定交叉编译器:
      CGO_ENABLED=1 GOOS=android GOARCH=arm64 CC=/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang go build .
      

内容的提问来源于stack exchange,提问作者M.Sz.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:10:27