我在linux / amd64盒子上编译了以下Go程序:
package main
import (
"fmt"
"os/user"
)
func main() {
fmt.Println(user.Current())
}
这很好用。但是当我从Mac盒子中交叉编译它时,我在linux盒子上运行该程序时出现以下错误:
user: Current not implemented on linux/amd64
如何交叉编译和使用包os/user
中的当前函数?
编辑1: 我应该补充一点,这些是我用来在Mac机上设置交叉编译的说明:https://code.google.com/p/go-wiki/wiki/WindowsCrossCompiling
编辑2:为windows / 386交叉编译工作正常。
答案 0 :(得分:19)
这是由于Issue 6376: user.Current panic in darwin-amd64 when crosscompiled from linux-amd64:
os / user依赖于cgo,并禁用cgo进行交叉编译, 因此这是预期的。
如果使用os / user,则必须在OS X上进行本机编译。
即使我们启用了交叉编译cgo支持,我也怀疑每个人都有 在他们的linux机器上运行OS X交叉工具链。
状态:WorkingAsIntended