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

Posted

技术标签:

【中文标题】GCC 致命错误:stdio.h:没有这样的文件或目录【英文标题】:GCC fatal error: stdio.h: No such file or directory 【发布时间】:2013-11-04 00:51:14 【问题描述】:

我正在尝试使用 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 时会产生错误的版本。什么可能导致此问题,如何解决?

【问题讨论】:

您可以通过执行echo "#include &lt;bogus.h&gt;" | gcc -v -x c - 并检查搜索路径来查看gcc 在哪里寻找头文件。 非常有用的命令! stdio.h 似乎不在 GCC 的任何搜索路径中。 Mavericks 不再有基本的 /usr/include。您需要从 XCode OS 10.9 SDK 将其链接到位。 顺便说一句,int main 的第一个参数是 int 而不是 int *argc。 @user2615799 在sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include 【参考方案1】:

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

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

感谢 Yann Ramin 的建议。我认为有一个更好的链接解决方案,但这既简单又快捷。

祝你好运!

【讨论】:

你指的是普通的Xcode吗?还是有一些特殊的版本叫做“XCode:开发工具”?因为我在 App Store 中只看到普通的 Xcode。当然,这是发布此答案后的 4 年。【参考方案2】:

macOS

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

xcode-select --install

如果您看到开发者工具已安装的错误消息(但仍然找不到头文件),请清除所有现有工具以进行全新安装:

sudo rm -rf /Library/Developer/CommandLineTools

Ubuntu

(根据answer)

sudo apt-get install libc6-dev

Alpine Linux

(根据comment)

apk add libc-dev

【讨论】:

如果您使用的是 Xcode 6 beta 5,此命令可能会失败。在这种情况下,您需要执行sudo xcode-select -s /Applications/Xcode.app。完成后,使用sudo xcode-select -s /Applications/Xcode6-Beta5.app 切换回来。 哇。 2017 年仍在使用 Xcode 8.0 和 Sierra。 Alpine 指南对于基于 alpine 发行版的 Docker 镜像非常有用,可以按需使用 对windows用户有什么建议吗?我在 Windows 上遇到了这个问题 对于安装 CLT 后仍有问题的 macOS 用户***.com/questions/63342521/…【参考方案3】:

ubuntu 用户:

sudo apt-get install libc6-dev

特别是 ruby​​ 开发人员在他们的 VM 上安装 gem install json -v '1.8.2' 时遇到问题

【讨论】:

有趣。谢谢。这个库还解决了其他一些问题。最近,我在尝试为 petabyet.com(使用 gcc)运行基准测试时遇到它。 在 alpine linux 上我需要 apk add libc-dev【参考方案4】:

Mac OS Mojave

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

在这个link 是更新的方法:

打开终端,然后:

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

这将打开一个安装向导。

2019 年 12 月更新

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

【讨论】:

升级到 Xcode 10.2 时也可以重新安装头文件。 当我打开 macOS_SDK_headers_for_macOS_10.14.pkg 时,我收到来自安装程序的可怕警告:“此软件包与此版本的 macOS 不兼容,可能无法安装。”我有莫哈韦沙漠。 @SteveSiegel 您运行的是什么 Mac OS 版本?我升级到 10.15.1,不再需要执行此解决方法。更新了我的答案以反映这一点。 “更新到 Mojave 10.15.1”这是不正确的。 @SteveSiegel pkg 已弃用。应该使用 SDKROOT。 ***.com/a/63343829/10063119【参考方案5】:

我知道我的情况很少见,但我仍会在此处添加它以供稍后解决问题的人使用。 我的 Makefile 中有一个 Linux 内核模块目标,我尝试将我的用户空间程序与没有 stdio 的内核模块一起编译。 将其作为一个单独的目标解决了这个问题。

【讨论】:

以上是关于GCC 致命错误:stdio.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

CMake项目Boost库错误:boost/config/compiler/gcc.hpp:165:10:致命错误:cstddef:没有这样的文件或目录

致命错误:Python.h:没有这样的文件或目录错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1

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

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

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

致命错误:jni_md.h:没有这样的文件或目录#include“jni_md.h”