编译错误:"stddef.h:没有这样的文件或目录"

Lou*_*uie 40 c++ cygwin g++

每当我尝试编译此代码时,它总是会出现此错误:

    In file included from /usr/include/wchar.h:6:0,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/cwchar:44,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/bits/postypes.h:40,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iosfwd:40,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/ios:38,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/ostream:38,
             from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iostream:39,
             from test.cpp:1:
    /usr/include/sys/reent.h:14:20: fatal error: stddef.h: No such file or directory
    #include <stddef.h>
                ^
    compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我试图编译的代码是:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World! :D";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Thi*_*zKp 62

该错误是因为您的gcc-core软件包和gcc-g ++不是同一版本.要么降级其中一个以解决问题或更新两个库.建议更新两个库.

  • 如果你正在使用[Babun](http://babun.github.io/),`pact update gcc-core gcc-g ++`. (22认同)
  • 这怎么可能呢?安装程序如何管理在全新安装上安装错误版本的软件包?另外你如何进行更新?我再次运行安装程序,似乎没有更新任何内容的选项. (6认同)
  • 今天仍然相关 - 在现有的Cygwin安装上首次安装gcc-core和gcc-g ++,并且它安装了gcc-g ++的后级版本,我不得不重新运行setup.exe并更新它. (5认同)
  • 如果您正在使用Babun并且@ nishpatel的答案对您不起作用,请尝试运行`pact update cygwin-devel`. (2认同)

Ben*_*Ben 5

我在新安装 MinGW 时遇到此错误,它与“Prasanth Karri”当前接受的答案中提到的已安装软件包无关。就我而言,问题是由-nostdinc我的 Makefile引起的。实际上,我只在为不同的目标平台构建时需要该编译器标志(而不是使用 MinGW 时),因此我通过从 MinGW 构建中删除该标志来解决该问题。