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 <bogus.h>" | 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