go - 如何在 Raspberry pi 1 model B 中为 FreeBSD 交叉编译 go 应用程序

标签 go cross-compiling freebsd coredump

Raspberry Pi 1 model B 上我安装了FreeBSD 10.3使用 SD 卡图像 RPI-B .

我可以启动、获取网络、通过 ssh 连接等等,一切似乎都正常且功能正常。这是 dmesg 输出的一部分:

FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 08:01:14 UTC 2016
    root@releng1.nyi.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/RPI-B arm
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
VT: init without driver.
CPU: ARM1176JZ-S rev 7 (ARM11J core)
 Supported features: ARM_ISA THUMB2 JAZELLE ARMv4 Security_Ext
 WB enabled LABT branch prediction enabled
  16KB/32B 4-way instruction cache
  16KB/32B 4-way write-back-locking-C data cache
real memory  = 503312384 (479 MB)
avail memory = 483127296 (460 MB)

在带有 go 1.7.1 的 mac os X (10.11.6) 上:

go version go1.7.1 darwin/amd64

我正在交叉编译这段代码:

package main

import (
        "fmt"
        "time"
)

func main() {
        t := time.Now().UTC()
        fmt.Println("Location:", t.Location(), ":Time:", t.Format(time.RFC3339Nano))
}

与:

env GOOS=freebsd GOARCH=arm go build

在 raspberry-pi 上运行生成的二进制文件会生成一个核心转储:

freebsd@rpi-b:~ % ./time 
Illegal instruction (core dumped)

time.core 输入后:

$ strings time.core

除了很多字符,我还看到了这个:

fatal error: cgo callback before cgo call

知道如何在 Raspberry pi 中使用什么标志或如何正确交叉编译 FreeBSD 吗?

最佳答案

感谢@putu 评论,我可以使用 GOARM=6 进行交叉编译

env GOOS=freebsd GOARCH=arm GOARM=6 go build

关于go - 如何在 Raspberry pi 1 model B 中为 FreeBSD 交叉编译 go 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39678131/

相关文章:

c++ - Mingw64-w64 属性(格式)和 <cinttypes> header

go - 在 Golang 项目中正确包含 C 库(按源代码)

go - 使用 GVisor (Cloud Run) 问题的 Pubsub 拉取订阅

c++ - 从 Mac 为 WIndows、Linux 交叉编译 C++/QT

Java HOSTS 文件绕过(域到 ip 绑定(bind))

unix - 确定监听某个端口的进程pid

node.js - 安装nodejs : I need GNU make. 请改为运行 'gmake'

concurrency - 并发 slice 访问

go - BigTable:一个大查询还是一打小查询?

c++ - 使用arm-musl交叉编译,ERROR> proc_open : hidden symbol `__init_array_end' in proc_open is referenced > by DSO