【问题标题】:fatal error: limits.h: No such file or directory致命错误:limits.h:没有这样的文件或目录
【发布时间】:2015-09-01 20:47:49
【问题描述】:

在 OSX 上,当我使用外部提供的编译器(例如 gcc 或自定义 clang 安装)时,我无法从命令行编译简单程序。找不到像limits.h 这样的系统标头。

错误信息示例:

fatal error: limits.h: No such file or directory

或者:

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

或者:

fatal error: 'stdlib.h' file not found

等等。

怎么了?

【问题讨论】:

    标签: xcode macos gcc clang


    【解决方案1】:

    确保您已安装 xcode 命令行工具:

    xcode-select --install
    

    (接受弹出对话框。)

    这会将系统头文件安装到 gcc 等工具所期望的标准位置,例如/usr/include.

    【讨论】:

    • gcc 应该已经安装了它自己的一组头文件,它知道如何找到它们。将一个编译器(clang,来自 Xcode)的头文件与另一个编译器(gcc,单独安装)一起使用,很可能是自找麻烦。
    • gcc 安装它自己的 C++ 头文件,但对于 C 头文件,情况就不同了。它尝试使用系统自己的 C 头文件。在某些(好的,很多)系统上,C 头文件不符合 ANSI 标准,因此 gcc 将提供自己的“固定”头文件来替换一些“损坏”的系统头文件。但是对于那些不需要“修复”的头文件,就不会有它的 gcc 副本。仅使用原始系统标题。有关详细信息,请参阅 gcc 从源代码编译时的 gcc "fix-includes" 步骤的文档。
    • 我在尝试手动安装某些单独的软件包时发现了这个错误。我正在以 conda 作为环境管理器运行 python 2.7,并在 mac os x 10.12.3 Sierra 中安装了 gcc 5.0。据我所知,我的 gcc 和命令行工具已完美安装并运行。无论如何,重新安装它们,解决问题。
    【解决方案2】:

    如果这不起作用,可能与升级到 macOS 10.14 Mojave 有关

    如何解决请看这里的答案:

    Can't compile C program on a Mac after upgrade to Mojave

    【讨论】:

      【解决方案3】:

      不知何故,当你安装 mojave 时,它​​会删除标题 - 运行:

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

      【讨论】:

        猜你喜欢
        • 2017-05-09
        • 2021-05-15
        • 2014-10-31
        • 2022-01-11
        • 2021-09-19
        • 2016-06-23
        • 2015-05-16
        相关资源
        最近更新 更多