我的64位Win7上有64位Cygwin 我安装了gcc-core和gcc-g ++包 我做了一个简单的C程序:
#include <stdio.h>
int main() {
exit(0);
}
当我用gcc-c test.c
编译时,我得到了:
fatal error: stdio.h: No such file or directory
使用-v
标志执行此操作我看到了:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include-fixed
/usr/include
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../lib/../include/w32api
End of search list.
GNU C (GCC) version 4.8.3 (x86_64-pc-cygwin)
gcc-core软件包附带的stdio.h
存在于我的电脑上这个位置(根据Cygwin的包搜索器也很好):
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/ssp/stdio.h
ssp
目录和为什么stdio.h
放在那里意味着什么?
为什么gcc在这个位置找不到stdio.h
?
答案 0 :(得分:3)
您在ssp
目录中找到的文件不是<stdio.h>
的版本。它仅包含有关gcc中stack-smash protector功能的<stdio.h>
中某些功能的额外信息。
实际<stdio.h>
应该在/usr/include
。
-v
输出中的这一行非常有趣:
/usr/inlude
你是如何获得没有 /usr/inlude
的{{1}}的?
哎呀,Keith Thompson在编辑中删除了c
中缺失的c
。
所以你的gcc应该找到inlude
,如果你有的话。它在那里吗?据我所知,从包文件列表中可以看出,它应该是cygwin基本系统的一部分(即使你没有安装编译器,它也应该在那里)。
您是否遗漏了其他任何头文件? /usr/include/stdio.h
和<stdlib.h>
是很好的考试候选人。
以下是一些调查cygwin包的命令,以及它是否包含文件:
<string.h>
更新:所以我似乎落后于时代,现在有cygcheck -f /usr/include/stdio.h
cygcheck -c cygwin
cygcheck -l cygwin | grep stdio
个套餐。头文件不再位于基本cygwin-devel
包中。要检查最新cygwin上的正确包,您可以使用
cygwin
正如评论中所做的那样。因为它被列为&#34;不完整&#34;解决方案可能是使用cygwin的安装程序重新安装它。