2

我正在尝试让 hugo 在我的 Intel Gallileo(Quark CPU)上运行的 Alpine 发行版上工作。

我已经克服了一些障碍。

此 CPU 没有 MMX,因此需要 gcc-go 将 hugo 编译成二进制文件(在虚拟机中)

但是在将 hugo 二进制文件复制到 galileo 之后,Hugo 不起作用。我收到以下错误:

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x44 pc=0xb7658e62]

goroutine 1 [running]:
runtime.dopanic_m
    :0
runtime.throw
    :0
runtime.sigpanic
    :0
runtime.sigtrampgo
    :0
runtime.sigtramp
    :0

    :0

goroutine 4 [select]:
go.x2eopencensus.x2eio..z2fstats..z2fview.worker.start
    /root/go/pkg/mod/go.opencensus.io@v0.22.0/stats/view/worker.go:154
created by go.x2eopencensus.x2eio..z2fstats..z2fview.go.x2eopencensus.x2eio..z2fstats..z2fview..init0
    /root/go/pkg/mod/go.opencensus.io@v0.22.0/stats/view/worker.go:32 +0x17a

这可能是:

  1. Quark 有 256MB 的内存,可执行文件是 127MB,也许内存不够?
  2. 夸克有一个众所周知的错误。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=738575%22这意味着它错误处理 LOCK 指令并导致段错误。

在普通的 C 工具链上,汇编器可以使用 "-Xassembler '-momit-lock-prefix=yes'" CFLAG 剥离 LOCK 操作(Galileo 是单核,因此不需要)

但是我不确定go build工具链上的等价物是什么,也许这根本不可能?

编译后的二进制文件在虚拟机中完美运行。

4

0 回答 0