Arm 我的围棋工具是为错误的架构而构建的吗?

Arm 我的围棋工具是为错误的架构而构建的吗?,arm,go,x86-64,Arm,Go,X86 64,我是Go语言的忠实粉丝,现在我正在尝试探索除x86/amd64之外的其他体系结构。我构建Go for ARM,它似乎对该目标有很好的支持。所有库都成功构建,测试失败(因为它试图在我的amd64系统上运行ARM测试二进制文件) 毕竟,我的$GOBIN文件夹中有5g/5l,它们生成了有效的ARM二进制文件。 但其他围棋工具的情况是: 5a: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (

我是Go语言的忠实粉丝,现在我正在尝试探索除x86/amd64之外的其他体系结构。我构建Go for ARM,它似乎对该目标有很好的支持。所有库都成功构建,测试失败(因为它试图在我的amd64系统上运行ARM测试二进制文件)

毕竟,我的
$GOBIN
文件夹中有
5g
/
5l
,它们生成了有效的ARM二进制文件。 但其他围棋工具的情况是:

5a:        ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
5c:        ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
5g:        ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
5l:        ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
6cov:      ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
6nm:       ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
6prof:     ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
cgo:       ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
ebnflint:  ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
godefs:    ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
godoc:     ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
gofix:     ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
gofmt:     ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
goinstall: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
gomake:    POSIX shell script, ASCII text executable
gopack:    ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
gopprof:   a perl script, ASCII text executable
gotest:    ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
gotry:     a bash script, ASCII text executable
gotype:    ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
govet:     ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
goyacc:    ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
hgpatch:   ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

看到了吗
cgo
是ARM二进制文件,
gofix
gofmt
也是ARM二进制文件。我想如果我提供
$GOHOSTOS
/
$GOHOSTARCH
变量,我会交叉编译我的应用程序吗?如何让
cgo
为ARM目标工作?

Go
linux/ARM
端口不完整。例如,
linux/arm
cgo
运行时未实现。请参见
$GOROOT/src/pkg/runtime/cgo/gcc_arm.S
$GOROOT/src/pkg/runtime/cgo/gcc_linux_arm.c

计划中没有Go 1


我不知道你在问什么,你有一个ARM二进制cgo,你在问如何让它在ARM上工作?你能澄清一下这个问题吗?我的主机是amd64,编译器和链接器是am64,但cgo是ARM。我认为cgo是在主机PC上运行的,而不是在目标设备上,所以我希望它也是amd64。如果我错了,请纠正我。好吧,问题是应该为目标体系结构编译什么Go工具,为主机编译什么?很遗憾,但这是真的:(你知道gcc对ARM的Go支持吗,(如果有办法使用ARM目标将我的Go代码与C代码链接起来的话)?