Cygwin gcc找不到stdio.h

Cygwin gcc找不到stdio.h,gcc,cygwin,Gcc,Cygwin,我的64位Win7上有一个64位Cygwin。 我安装了gcc核心和gcc-g++软件包。 我制作了一个简单的C程序: #include <stdio.h> int main() { exit(0); } gcc核心软件包附带的stdio.h在我的电脑上的这个位置(根据Cygwin的软件包搜索程序也可以): /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/ssp/stdio.h ssp目录是什么意思?为什么stdio.h放在那里? 为什么

我的64位Win7上有一个64位Cygwin。
我安装了gcc核心和gcc-g++软件包。
我制作了一个简单的C程序:

#include <stdio.h>
int main() {
  exit(0);
}
gcc核心软件包附带的
stdio.h
在我的电脑上的这个位置(根据Cygwin的软件包搜索程序也可以):
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/ssp/stdio.h

ssp
目录是什么意思?为什么
stdio.h
放在那里?

为什么gcc找不到此位置的
stdio.h
文件?

ssp
目录中找到的文件不是
的版本。它仅包含有关gcc中堆栈损坏保护器功能的
中某些函数的额外信息

实际的
应该在
/usr/include

-v
输出中的这一行非常有趣:

/usr/inlude
你是如何得到一个没有
c
/usr/inlude

哎呀,基思·汤普森在编辑中删除了
inlude
中缺少的
c

因此,您的gcc应该找到
/usr/include/stdio.h
,如果您有它的话。它在那里吗?从包文件列表中可以看出,它应该是cygwin基本系统的一部分(即,即使您没有安装编译器,它也应该在那里)

您是否缺少任何其他头文件<代码>和
是很好的候选测试

以下是一些用于调查cygwin包以及该包是否包含该文件的命令:

cygcheck -f /usr/include/stdio.h
cygcheck -c cygwin
cygcheck -l cygwin | grep stdio
更新:看来我落后于时代,现在有了一个
cygwin-devel
软件包。头文件不再位于基本
cygwin
包中。要在最新的cygwin上检查正确的软件包,请使用

cygcheck -c cygwin-devel

正如在评论中已经做的那样。由于它被列为“不完整”,解决方案可能是使用cygwin的安装程序重新安装它。

我认为您的实际源文件具有
\include
,而不是
\include stdio.h
。我已经修正了你问题的格式;请确认它仍然是准确的。而退出需要#包含,尽管这不是问题的原因。你应该添加一个包含目录,正如Wumpus Q.Wumbley指出的:这不是你想要的文件。@Keith Thompson:你说得对,我在另一台机器上安装Cygwin时编辑PostMeans时犯了错误,gcc工作正常。正如Wumpus Q所说,我看到我的机器上缺少一个
/usr/include/stdio.h
。我的机器上也没有
/usr/include/
中的string.h和stdlib.h。所以在安装cygwin-devel的时候有些东西被破坏了???cygwin安装程序报告cygwin-devel软件包已安装(保留),但是我的计算机中/usr/include/有85个文件,而另一台工作的计算机上有112个文件是:`cygcheck-c cygwin-devel cygwin软件包信息包版本状态cygwin-devel 1.7.33-1不完整`
cygcheck -c cygwin-devel