HarmonyOS鸿蒙Next中go源码编译so失败提示-buildmode=c-shared not supported on openharmony/arm64
HarmonyOS鸿蒙Next中go源码编译so失败提示-buildmode=c-shared not supported on openharmony/arm64 设置了环境变量
export AR=/Users/command-line-tool/sdk/default/openharmony/native/llvm/bin/llvm-ar
export CC=/Users/command-line-tool/sdk/default/openharmony/native/llvm/bin/aarch64-unknown-linux-ohos-clang
export CXX=/Users/command-line-tool/sdk/default/openharmony/native/llvm/bin/aarch64-unknown-linux-ohos-clang++
export GOOS=openharmony
export GOARCH=arm64
export CGO_ENABLED=1
编译命令如下
go build -x -buildmode=c-shared -o libtest.so -x sdk.go
提示
-buildmode=c-shared not supported on openharmony/arm64
更多关于HarmonyOS鸿蒙Next中go源码编译so失败提示-buildmode=c-shared not supported on openharmony/arm64的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Go目前对 openharmony/arm64
平台的 c-shared
模式支持不完善无法直接通过 -buildmode=c-shared
生成动态库。如果项目允许,建议采用鸿蒙官方推荐的 C/C++ NDK工具链 生成共享库
aarch64-unknown-linux-ohos-clang -shared -fPIC -o libtest.so your_code.c
更多关于HarmonyOS鸿蒙Next中go源码编译so失败提示-buildmode=c-shared not supported on openharmony/arm64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
export GOOS=openharmony,要用ohos_golang_go编译;可以指定export GOOS=linux,首页go通用版本编译
可以先用这个版本的go源码自行编译
https://gitcode.com/openharmony-sig/ohos_golang_go
这个编译的so是给鸿蒙上的app使用的,GOARCH用安卓的话是不是鸿蒙app无法加载,
go暂时不支持吧
还有这个问题应该去 github.com/golang/go 下提问
在HarmonyOS Next中,Go语言编译为动态链接库(so)时遇到"buildmode=c-shared not supported"错误,是因为当前OpenHarmony对Go的c-shared构建模式支持有限。该模式在arm64架构的OpenHarmony平台上尚未实现。Go语言在OpenHarmony的生态适配仍在完善中,部分功能如c-shared构建模式可能不可用。建议检查使用的Go版本是否支持OpenHarmony目标平台,或考虑其他跨语言调用方案。
这个错误表明当前Go工具链还不支持在OpenHarmony/arm64平台上构建C共享库(-buildmode=c-shared)。这是Go语言对OpenHarmony平台支持的限制。
目前可行的解决方案是:
- 尝试使用静态库模式(-buildmode=c-archive)替代共享库
- 等待Go官方增加对OpenHarmony平台C共享库的支持
- 考虑使用其他跨平台编译方案
建议检查使用的Go版本是否为最新版,因为Go对OpenHarmony的支持还在不断完善中。