【问题标题】:syscall variables undefined系统调用变量未定义
【发布时间】:2015-02-06 07:52:34
【问题描述】:

尝试在我的 Mac 上构建以下程序时,我收到构建错误:undefined: syscall.TCPInfo,即使该变量已明确记录在 http://golang.org/pkg/syscall/#TCPInfo

package main

import "syscall"

func main() {
    _ = syscall.TCPInfo{}
}

这是我的 go tool 版本。

$ go version
go version go1.3 darwin/amd64

我认为这可能是缺乏操作系统支持的问题,所以我在http://play.golang.org 上尝试了它,但看起来syscall 包中随机丢失了许多记录在案的变量:http://play.golang.org/p/w3Uk6NaZVy

我错过了什么吗?

【问题讨论】:

  • 系统调用包依赖于平台。在线文档仅显示 linux 构建。
  • play.golang.org 上的 GOOS 也不是 linux,它是在 nacl 下运行的。
  • 废话,是的,就是这样。谢谢

标签: go system-calls


【解决方案1】:

在系统调用中指定的变量取决于操作系统。

您可以在文件中添加后缀以指定应该为哪些操作系统构建它们:

// +build linux,386 darwin,!cgo

因此您可以为每个操作系统使用特定的syscall 标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多