2

我想在 Arduino Yún 平台上运行一个 Go 程序。它具有在 32 位 MIPS 处理器 (Atheros AR9331) 上运行的嵌入式 Linux。

test.go 的内容:

package main

import "fmt"

func main() {
    fmt.Println("Hello!")
}

我在 Linux (4.13.12-1-ARCH #1 SMP PREEMPT Wed Nov 8 11:54:06 CET 2017 x86_64 GNU/Linux) 上使用以下命令,Go (go1.9.2 linux/amd64) 编译二进制文件:

GOOS=linux GOARCH=mips go build test.go

我将二进制文件复制到设备(通过 SSH)并在那里执行。它不会崩溃。它不打印“你好!”。它似乎只是在等待标准输入。我该如何调试/修复这个?

设备上 /proc/cpuinfo 的内容:

system type     : Atheros AR9330 rev 1
machine         : Arduino Yun
processor       : 0
cpu model       : MIPS 24Kc V7.4
BogoMIPS        : 265.42
wait instruction    : yes
microsecond timers  : yes
tlb_entries     : 16
extra interrupt vector  : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0000, 0x0920, 0x04b8, 0x0180]
ASEs implemented    : mips16
shadow register sets    : 1
kscratch registers  : 0
core            : 0
VCED exceptions     : not available
VCEI exceptions     : not available

设备上 strace ./test 的输出:

execve("./test", ["./test"], [/* 11 vars */]) = 0

uname -r 在设备上的输出:

Linux B4218AF03376 3.3.8 #1 Sun Oct 4 02:29:26 CEST 2015 mips GNU/Linux
4

1 回答 1

0

您可能想再次尝试使用添加了 32 位 MIPS 软件浮点仿真的 Go 1.10。

您可以使用 启用此功能GOMIPS=softfloat,请参阅 https://golang.org/doc/go1.10#ports

于 2018-05-11T18:24:53.390 回答