x/mobile: 构建Android平台的GO应用程序失败

fdbelqdn  于 6个月前  发布在  Go
关注(0)|答案(1)|浏览(54)

你正在使用的Go版本是什么( go version )?

$ go version
go version go1.11.1 linux/amd64

这个问题在最新版本中是否会重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GOARCH="amd64"
GOBIN="/home/mhirpara/work/go/bin"
GOCACHE="/home/mhirpara/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/mhirpara/work/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/go"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build255459644=/tmp/go-build -gno-record-gcc-switches"

你做了什么?

尝试编译以下包含C调用的GO应用程序,用于Android平台。

package main

// #include <unistd.h>
// int
// am_session_leader()
// {
//   return (getsid(0));
// }
import "C"
import (
	"fmt"
)

func main() {
	fmt.Println(C.am_session_leader())
}

你的预期结果是什么?

预期的结果是能够为Android平台构建这个应用程序,就像其他平台一样,并且应该能够运行。

你实际看到的情况是什么?

我看到了如下的构建错误:

# command-line-arguments
./main.go:7: error: undefined reference to 'getsid'
./main.go:7: error: undefined reference to 'getsid'
clang70: error: linker command failed with exit code 1 (use -v to see invocation)
# command-line-arguments
./main.go:7:12: warning: implicit declaration of function 'getsid' is invalid in C99 [-Wimplicit-function-declaration]

命令:

GOOS=android GOARCH=arm GOROOT=/usr/lib/go CGO_ENABLED=1 CC=/home/mhirpara/work/go/pkg/gomobile/ndk-toolchains/arm/bin/arm-linux-androideabi-gcc go build main.go

OR

gomobile build -x -target=android github.com/mehulhirpara/learning/cgo-getsid
fgw7neuy

fgw7neuy1#

请注意,到目前为止,这个问题仅在android/arm上观察到,而不是在android/arm64上观察到。

相关问题