GCC致命错误:stdio.h:没有这样的文件或目录


90

我正在尝试使用GCC 4.9(实验性)在OS X 10.9上的C语言中编译程序。出于某种原因,在编译时出现以下错误:

gcc: fatal error: stdio.h: No such file or directory

然后,我尝试了一个简单的Hello World程序:

#include <stdio.h>

int main(int argc, const char *argv[])
{
    printf("Hello, world!");
    return 0;
}

同样,在运行时gcc -o ~/hello ~/hello.c,我遇到了同样的错误。我正在使用的实验版本gcc,但是似乎不可能发行一个在导入时产生错误的版本stdio。是什么导致此问题,如何解决?


11
通过执行echo "#include <bogus.h>" | gcc -v -x c -并检查搜索路径,可以看到gcc在哪里寻找头文件。
Christian Ternus

1
非常有用的命令!stdio.h在GCC的任何搜索路径中看起来都不是。
2013年

2
小牛不再拥有基本的/ usr / include。您需要从XCode OS 10.9 SDK将其链接到位。
Yann Ramin

3
顺便说一句,int main第一个参数是int而不是int * argc。
13年

3
@ user2615799,网址为sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin,

Answers:


141

Mac OS X

我也遇到了这个问题(通过Macports编译器遇到)。先前版本的Xcode允许您通过xcode / Preferences安装命令行工具,但是xcode5在GUI中没有提供命令行工具选项,因此我认为它现在已自动包含在内。尝试运行以下命令:

xcode-select --install

的Ubuntu

(根据此答案

sudo apt-get install libc6-dev

高山Linux

(根据此评论

apk add libc-dev

如果您使用的是Xcode 6 beta 5,则此命令可能会失败。在这种情况下,您需要做sudo xcode-select -s /Applications/Xcode.app。完成后,使用切换回sudo xcode-select -s /Applications/Xcode6-Beta5.app
Sjors Provoost

1
哇。在2017
仍可

1
Alpine指南对于基于alpine发行版的Docker映像非常有用,可
按需

对Windows用户有什么建议吗?我在Windows上遇到此问题
Ratul Hasan

1
对于谁还是无法安装CLTS后问题的MacOS用户stackoverflow.com/questions/63342521/...
anki

46

Mac OS Mojave

接受的答案不再起作用。运行命令时,xcode-select --install它会告诉您使用“软件更新”来安装更新。

链接中有更新的方法:

打开一个终端,然后:

cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg

这将打开一个安装向导。

更新12/2019

更新到Mojave 10.15.1后,似乎xcode-select --install可以按预期使用。


升级到Xcode 10.2时,重新安装标头也可以。
Bojan Dimovski

当我打开macOS_SDK_headers_for_macOS_10.14.pkg时,安装程​​序会发出可怕的警告:“此软件包与此版本的macOS不兼容,可能无法安装。” 我有莫哈韦沙漠
史蒂夫·西格尔

@SteveSiegel您正在运行哪个Mac OS版本?我已升级到10.15.1,并且不再需要执行此解决方法。更新了我的答案以反映这一点。
Samshel '19

“更新到Mojave 10.15.1”是不正确的。@SteveSiegel不推荐使用pkg。应该使用SDKROOT。stackoverflow.com/a/63343829/10063119
anki

23

ubuntu用户:

sudo apt-get install libc6-dev

特别是gem install json -v '1.8.2'在虚拟机上安装有问题的ruby开发人员


1
有趣。谢谢。这个库也解决了其他一些问题。最近,我在尝试为petabyet.com(使用gcc)运行基准测试时遇到了它。
dhaupin '16

14
在高山Linux上,我需要apk add libc-dev
shadi

3

我有同样的问题。我从应用商店安装了“ XCode:开发工具”,它为我解决了这个问题。

我认为此链接会有所帮助:https : //itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

感谢Yann Ramin的建议。我认为通过链接可以找到更好的解决方案,但这既方便又快捷。

祝好运!


您是指普通的Xcode吗?还是有一些特殊的版本叫做“ XCode:开发工具”?因为我在App Store中只看到普通的Xcode。当然,这是发布此答案的未来四年。
user124384 '17

1

我知道我的案件很罕见,但我仍然会在这里添加它,以便以后进行问题排查的人使用。我的Makefile中有一个Linux Kernel模块目标,我试图将用户空间程序与没有stdio的内核模块一起编译。将其作为单独的目标可以解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.