package main
/*
#include <stdio.h>
int add( int a, int b )
{
return a + b;
}
*/
import "C"
import (
"fmt"
)
func main() {
fmt.Println( "CGO 32" )
fmt.Println( "我爱中国" )
ret := int( C.add( 666, 888 ) )
fmt.Printf( "ret:%d\r\n", ret )
}
这个是CGO代码,用ohos编译器可编译出执行程序,但是在设备上运行后崩了,反馈Signal 11。去掉C元素后编译,运行正常,但是“我爱中国”显示乱码。
期望:
OpenHarmony系统支持CGO,即Go的应用和Go编译的动态库。
如何复现该缺陷
go env -w GOOS=linux
go env -w CGO_ENABLED=1
go env -w GOARCH=arm
go env -w GOARCH=arm
go env -w CC="/opt/ohos-sdk/linux/native/llvm/bin/clang --target=arm-linux-ohos"
go env -w CXX="/opt/ohos-sdk/linux/native/llvm/bin/clang++ --target=arm-linux-ohos"
go env -w CGO_LDFLAGS="--target=arm-linux-ohos"
编译环境变量设置举例,用CGO应用在设备上加权限后执行 |