你正在使用的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
1条答案
按热度按时间fgw7neuy1#
请注意,到目前为止,这个问题仅在android/arm上观察到,而不是在android/arm64上观察到。