cgo - 在MacOSX中找不到'runtime.h'文件

时间:2016-12-15 11:44:02

标签: go cgo

我正在尝试按照here

执行cgo程序
    package main

    /*
    #include "runtime.h"

    int goId() {
            return g->goid;
    }
    */
    import "C"
    import "fmt"

    func main() {
     x := C.goId()
     fmt.Printf("Id - %d", x)
    }

在运行上述程序时,我收到以下错误: -

jab-MacBook-Pro-4:src debraj$ go build gid.go
# command-line-arguments
./gid.go:4:10: fatal error: 'runtime.h' file not found
#include "runtime.h"
         ^
1 error generated.

如果我将标题更改为如下所示: -

#include <objc/runtime.h>

然后它给我以下错误: -

jab-MacBook-Pro-4:src debraj$ go build gid.go
# command-line-arguments
./gid.go:7:9: error: use of undeclared identifier 'g'
        return g->goid;
               ^
1 error generated.

环境

  • MacOSX - 10.11.6
  • Go - 1.7.3

有人可以告诉我如何在MacOSX中运行上述程序吗?

1 个答案:

答案 0 :(得分:0)

正如golang-nuts中所讨论的那样,从Go 1.5开始这是不可能的

  

那不是一个cgo程序,而是一个使用gc的Go程序   编译器将C程序编译成生成的二进制文件的亲和力。

     

但是从Go 1.5.0开始,该C后端被删除(最后一个版本是   1.4.2),使副作用消失。