Golang中Android/arm64的构建问题
Golang中Android/arm64的构建问题 我的Go环境如下:

我的.bashrc文件如下:

我的main.go文件如下:

但我的构建出现以下错误:

抱歉,我的英语不好。 有什么建议吗?
你检查过所有权和权限了吗?
是的,所有文件都设置为 chmod 777
mark 是否被允许读取 /root 目录及其子目录的内容?
把东西放在这个位置有点奇怪……
抱歉,我放弃了。 谢谢你的建议。 我构建成功了,但*.so文件被Qt包含了。 应用程序总是崩溃。 使用QLibrary得到相同的结果。 我放弃了。
我将SDK移动到/home/username/Android/Sdk目录下, 并重新设置了ANDROID_HOME和ANDROID_NDK_HOME环境变量, 但仍然遇到相同的错误。 我进入ndk/platforms/android-28目录查找include目录,但无法找到。
由于你直接使用 go,可能还需要在 CGO_* 变量中加入一些 -I… 参数。
但是 go 是否使用了正确的 gcc 呢?
我从未尝试过在 Android 上使用 go……
我的目标如下: 将Golang编译为xxx.so文件,并使用Qt(C++)调用Golang的库。 因为Qt的HTTP库不好用,所以我想使用Golang的HTTP库。 我已经尝试了以下方法: 我下载了arm64版本的gcc,并编译了Golang(GOOS=android或linux;GOARCH=arm64) 我下载了arm版本的gcc并编译了Golang(GOOS=android或linux,GOARCH=arm) 全部编译成功(go build -buildmode=c_shared -o test.so main.go) 但是应用程序崩溃了。
为什么不使用gomobile? 因为gomobile生成的是.aar文件。 我必须使用C++调用JNI,感觉这样绕了弯路。
我不知道GOTOOLDIR为何让你产生怀疑。 是否存在任何错误!?
根据您提供的错误信息和配置,问题在于构建Android/arm64目标时缺少必要的C语言交叉编译工具链。以下是解决方案:
首先需要安装Android NDK并配置正确的环境变量:
# 下载Android NDK(以r21d版本为例)
wget https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip
unzip android-ndk-r21d-linux-x86_64.zip
# 在.bashrc中添加环境变量
export ANDROID_NDK_HOME=/path/to/android-ndk-r21d
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
然后设置Go的环境变量来启用Android交叉编译:
export GOOS=android
export GOARCH=arm64
export CGO_ENABLED=1
export CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang
构建命令示例:
# 重新加载配置
source ~/.bashrc
# 构建Android arm64版本
go build -o app_android_arm64 main.go
如果仍然遇到问题,可以尝试使用纯Go构建(禁用CGO):
export CGO_ENABLED=0
go build -o app_android_arm64 main.go
对于包含C语言依赖的项目,必须确保NDK工具链正确配置。检查您的main.go文件是否包含cgo指令:
// 如果使用cgo,确保有正确的构建标签
// #cgo LDFLAGS: -llog
package main
import "C"
func main() {
// 您的代码
}
如果错误持续存在,请验证NDK安装路径和工具链可执行文件的权限。

