【问题标题】:NO such file or directory for the files -----stdarg.h and float.h?文件 -----stdarg.h 和 float.h 没有这样的文件或目录?
【发布时间】:2009-10-11 10:46:48
【问题描述】:

我在 xcode 项目中使用一些扩展名为 .mm 的文件来编译这些文件,我们在添加此编译器后在构建设置中添加了 LLVM-GCC 4.2,这显示了错误

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/include/float.h:8:24: error: float.h: No such file or directory

我不知道如何删除此错误,任何帮助删除此错误。

谢谢

巴拉杰

【问题讨论】:

  • 如果你接受一些答案,你更有可能让人们费心回答

标签: ios c llvm-gcc


【解决方案1】:

在 Mac OSX 上默认使用的 gcc 4.2 不支持这些标头。

切换到 4.0 版本(描述为here

【讨论】:

  • 实际上我正在使用 xcode sdk 3.1 来使用该代码,并且还设置了由 LLMV GCC 4.2 构建的整个项目,并且在我添加它之后仅显示两个这些目录文件错误,否则我使用 gcc 4.0 执行此操作正如您在链接中所述,它会引发许多错误,因此有什么方法可以将这些文件添加到该编译器目录中,请指导我!!!
  • * 你确定那些是错误而不是警告吗?如果是后者,您可能可以忽略它们。 * 如果它们是错误的,请考虑注释掉你有问题的#include。您的项目可能并不真正需要它们。 * 否则,您可以查看这篇帖子 mailinglistarchive.com/xcode-users@lists.apple.com/… 作者说原因在于 /usr/lib/gcc/4.2/include (或附近的某个地方)中缺少标头。您可以尝试从 gcc 的早期版本(例如 4.0)复制丢失的文件。不幸的是,我无法检查这些是否有效 =(
  • 请检查这些是错误/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/include/stdarg.h:4:25:错误:stdarg.h :没有这样的文件或目录/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/include/float.h:8:24:错误:float.h:没有这样的文件或目录这些是即将发生的错误!!!
  • 据我记得,/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/ 文件 stdarg.h 和 float.h 中有“include_next”子句usr/include/ 这意味着预处理器会尝试在其他文件夹中查找具有相同名称的其他包含,并且当它不能显示您已描述的错误时。如果你问我,那就太乱了。此处描述为mailinglistarchive.com/xcode-users@lists.apple.com/…
【解决方案2】:

我遇到了同样的问题,但这里的所有其他答案都无法解决问题, 所以我尝试了:

cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/include
sudo mv stdarg.h stdarg.h.original
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/lib/gcc/arm-apple-darwin9/4.0.1/include/stdarg.h

编译错误消失了!

【讨论】:

  • 成功了!虽然对我来说路径略有不同,因为我将 Xcode 安装在自定义位置(不是默认位置)。只需查看错误中的路径即可。使用与此答案相关的相同路径。如果在模拟器上运行,iPhoneOS 将是 iPhoneSimulator,当然,3.2.sdk 可能会有所不同,具体取决于您构建的 SDK。
  • 将最后一行缩短为sudo ln -s ../lib/gcc/arm-apple-darwin9/4.0.1/include/stdarg.h。另外,我应该使用arm-apple-darwin9 还是10?我会选择10
  • 有趣。但是(如果我说的很明显,请原谅),这似乎是一个测试,而不是一个实际的解决方案,对吗?对于大型团队或开源项目来说,这种事情可能会非常痛苦——破解系统级文件似乎从来都不是一个好的做法。
【解决方案3】:

我在 GCC 4.0 编译器上已经有了这个 更改为 LLVM 编译器 1.6 对我有用。使用 Mac OS X 10.7.3 Xcode 3.2.5

【讨论】:

    【解决方案4】:

    我也遇到了这个问题,更改为 GCC 4.0 并没有为我解决这个问题。我还必须将我的活动 SDK(Xcode 编辑器或控制台窗口左上角的下拉菜单)从 10.4(基本 SDK)更改为 10.6(我正在运行 Snow Leopard)。

    我不知道这可能会对您的开发产生什么影响,但这对我的问题来说已经足够了,因为我只是在做一个简单的命令行工具。

    【讨论】:

      【解决方案5】:

      在安装 SDL 框架后,我在 xcode 中构建 Hello World 应用时遇到了这个错误。使用 xcode 3.3.2 对 Snow Leopard OSX 10.6.3 进行标准安装会引发这些错误,

      "stdarg.h: 没有这样的文件或目录" "float.h: 没有这样的文件或目录"

      因为它默认为 SDK 10.4。

      如果您遇到该问题,请将 SDK 设置为 10.6,您应该清楚。

      【讨论】:

        【解决方案6】:

        根据我的测试和上面的建议,这个问题与 Base SDK 版本密切相关;也就是说,早期的 SDK 仅适用于 GCC 4.0,而后来的 SDK 则适用于 GCC 4.0 或 4.2(以及较新的 LLVM 选项)。

        总结应该起作用的选项:

        适用于 iOS 项目/目标的基础 SDK:
        iOS 3.2 及更早版本: GCC 4.0
        iOS 4.0 及更高版本: GCC 4.0、GCC 4.2、LLVM GCC 4.2、LLVM Clang

        用于 Mac OS X 项目/目标的基础 SDK:
        Mac OS X 10.5 及更早版本: GCC 4.0
        Mac OS X 10.6 及后来: GCC 4.0、GCC 4.2、LLVM GCC 4.2、LLVM Clang

        【讨论】:

          【解决方案7】:

          添加额外的标志,如下所示

          CFLAGS += -I"$(YOUR_SYSROOT)/usr/lib/gcc/arm-apple-darwin10/4.2.1/include"
          CPPFLAGS += -I"$(YOUR_SYSROOT)/usr/include/c++/4.2.1"
          CPPFLAGS += -I"$(YOUR_SYSROOT)/usr/include/c++/4.2.1/armv6-apple-darwin10" 
          

          【讨论】:

            猜你喜欢
            • 2016-02-19
            • 2012-11-29
            • 2021-06-24
            • 2015-02-20
            • 1970-01-01
            • 1970-01-01
            • 2012-05-06
            • 1970-01-01
            相关资源
            最近更新 更多