Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Go 1.8插件,致命错误:stddef.h:没有这样的文件_C_Gcc_Go_Plugins_Cgo - Fatal编程技术网

C Go 1.8插件,致命错误:stddef.h:没有这样的文件

C Go 1.8插件,致命错误:stddef.h:没有这样的文件,c,gcc,go,plugins,cgo,C,Gcc,Go,Plugins,Cgo,注意: $ cat /tmp/plugin.go package main import "fmt" var V int func F() { fmt.Printf("Hello, number %d\n", V) } $ go build -buildmode=plugin -o /tmp/plugin.so /tmp/plugin.go # runtime/cgo cgo-builtin-prolog:1:57: fatal error: stddef.h: No such file

注意:

$ cat /tmp/plugin.go
package main

import "fmt"

var V int

func F() { fmt.Printf("Hello, number %d\n", V) }

$ go build -buildmode=plugin -o /tmp/plugin.so /tmp/plugin.go
# runtime/cgo
cgo-builtin-prolog:1:57: fatal error: stddef.h: No such file or directory
compilation terminated.
为什么呢

这是Ubuntu 17.04下的版本,我已经安装了build essentials:

$ go version
go version go1.9 linux/amd64

$ uname -r
4.10.0-37-generic

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:        17.04
Codename:       zesty

$ apt-cache policy build-essential
build-essential:
  Installed: 12.1ubuntu2
  Candidate: 12.1ubuntu2
请不要回答“”,因为我的gcc核心包和gcc-g++是同一版本的——以下是我的gcc相关包:

 gcc_4:6.3.0-2ubuntu1
 gcc-6_6.3.0-12ubuntu2
 gcc-6-base:amd64_6.3.0-12ubuntu2
 libgcc-6-dev:amd64_6.3.0-12ubuntu2
 libgcc1:amd64_1:6.3.0-12ubuntu2
更新

谢谢@peterSO,这似乎是我gcc自己的问题:

$ cat /tmp/foo.c 
#include <stdio.h>

$ gcc /tmp/foo.c 
In file included from /tmp/foo.c:1:0:
/usr/include/stdio.h:33:21: fatal error: stddef.h: No such file or directory
 # include <stddef.h>
现在我的simple.c文件编译正常了,但是我遇到了一个新的问题
cgo

$ go build -buildmode=plugin -o /tmp/plugin.so /tmp/plugin.go
# runtime/cgo
In file included from /usr/include/errno.h:35:0,
                 from cgo-gcc-prolog:21:
/usr/include/x86_64-linux-gnu/bits/errno.h:24:26: fatal error: linux/errno.h: No such file or directory
 # include <linux/errno.h>
                          ^
compilation terminated.
$go build-buildmode=plugin-o/tmp/plugin.so/tmp/plugin.go
#运行时/cgo
在/usr/include/errno.h:35:0中包含的文件中,
来自cgo gcc序言:21:
/usr/include/x86_64-linux-gnu/bits/errno.h:24:26:致命错误:linux/errno.h:没有这样的文件或目录
#包括
^
编译终止。
我知道这可能是Ubuntu/gcc特有的问题(参考:我的
stddef.h
/usr/src/linux-headers-4.10.0-37/include/linux/stddef.h
下),但是这里的任何人都知道Go和gcc,知道如何修复它,以便Go插件可以正确编译


谢谢

为我工作:16.04和17.10;gcc5和gcc7;go1.8、go1.9、gotip;我已经安装了
gcc
libc6-dev
。我安装了Ubuntu 17.04并更新了所有软件包(
apt-update
apt-upgrade
)。所有必要的软件包,包括
gcc
libc6-dev
,都已预安装。我下载并安装了
go1.9.2
(和)。我创建了
/tmp/plugin.go
并运行
go build-v-buildmode=plugin-o/tmp/plugin.so/tmp/plugin.go
。它成功完成并创建了
/tmp/plugin.so
。您的Ubuntu 17.04安装已中断。您的Ubuntu 17.04安装已中断。您可能需要重新安装操作系统。您可以尝试将操作系统刷新到17.10(从Ubuntu 17.04:)上。谢谢@peterSO,我想是的。谢谢你一直以来的努力。我刚刚验证了我的另一台机器工作正常,它是以同样的方式安装的。我将尝试重新安装所有与gcc相关的
gcc
,看看它是否对我有帮助……对我有用:16.04和17.10;gcc5和gcc7;go1.8、go1.9、gotip;我已经安装了
gcc
libc6-dev
。我安装了Ubuntu 17.04并更新了所有软件包(
apt-update
apt-upgrade
)。所有必要的软件包,包括
gcc
libc6-dev
,都已预安装。我下载并安装了
go1.9.2
(和)。我创建了
/tmp/plugin.go
并运行
go build-v-buildmode=plugin-o/tmp/plugin.so/tmp/plugin.go
。它成功完成并创建了
/tmp/plugin.so
。您的Ubuntu 17.04安装已中断。您的Ubuntu 17.04安装已中断。您可能需要重新安装操作系统。您可以尝试将操作系统刷新到17.10(从Ubuntu 17.04:)上。谢谢@peterSO,我想是的。谢谢你一直以来的努力。我刚刚验证了我的另一台机器工作正常,它是以同样的方式安装的。我将尝试重新安装所有相关的
gcc
,看看是否有帮助。。。
$ go build -buildmode=plugin -o /tmp/plugin.so /tmp/plugin.go
# runtime/cgo
In file included from /usr/include/errno.h:35:0,
                 from cgo-gcc-prolog:21:
/usr/include/x86_64-linux-gnu/bits/errno.h:24:26: fatal error: linux/errno.h: No such file or directory
 # include <linux/errno.h>
                          ^
compilation terminated.