go - 交叉编译到 ARMv7 失败

标签 go arm

我尝试在我的 Linux 桌面上编译一个 go 程序(Linux desktop 4.10.0-28-generic#32-Ubuntu SMP Fri Jun 30 05:32:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux),go 版本 go version go1.8.3 linux/amd64 到 arm:

$ GOPATH=/home/xrfang/git/hermes/ GOARM=7 GOARCH=arm go build .

生成了可执行文件,但似乎不是 ARMv7:

$ file hermes

hermes: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped

它显示 EABI5。如何交叉编译为 ARMv7?我的 Linux 桌面上是否缺少任何东西以便交叉编译回退到较低的 ARM 版本?

谢谢。

最佳答案

我相信,它不是 ARMv5。我试图在 MAC OS 上做同样的事情,Mac 上的"file"命令说的是 v7,但 Linux 上的"file"命令却没有。不过,我知道 v7 有一些很好的改进,可能会提高程序的性能。

但是,这超出了这个问题的范围,您可能需要更深入地了解您正在做的事情以及为什么期望性能得到改善。 我只能说,它是为 v7 编译的。

关于go - 交叉编译到 ARMv7 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835134/

相关文章:

http - 如何将所有GET请求查询参数放入Go中的结构中?

xml - 具有不同属性的相同 XML 标记的不同结构

c - ARM 汇编内联 C 互斥实现

c - 在裸机嵌入式系统 (ARM) 上进行分析

ubuntu - Golang http 服务器不响应 ipv6 请求

go - 无法从 env 获取嵌套 key 以使用 viper 覆盖 yaml 配置文件

go - 相互并发的 Go 例程中的死锁错误

c - 了解 GDB 中基本 C 程序中的 asm 指令

linux - 用户应用程序是否有任何标准方法来访问 ARM Linux 上的协处理器?

python:来自 math 和 os 模块的函数被 EINTR 中断