我正在尝试执行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中运行上述程序吗?
最佳答案
如golang-nuts中所述,从Go 1.5开始这是不可能的
那不是一个cgo程序,而是一个使用gc的Go程序。
编译器将C程序编译为结果二进制文件的相似性。
但是从Go 1.5.0开始,该C后端被删除(最后一个版本是
1.4.2),这样副作用就消失了。
关于go - cgo-在MacOSX中找不到'runtime.h'文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41163361/