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

8 回复

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

GOARCH用安卓的。替换鸿蒙的工具链。 cke_160.png

这个编译的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平台支持的限制。

目前可行的解决方案是:

  1. 尝试使用静态库模式(-buildmode=c-archive)替代共享库
  2. 等待Go官方增加对OpenHarmony平台C共享库的支持
  3. 考虑使用其他跨平台编译方案

建议检查使用的Go版本是否为最新版,因为Go对OpenHarmony的支持还在不断完善中。

回到顶部