2009-10-11 311 views
3

我使用的Xcode项目.mm扩展一些文件添加该编译器编译后,我们已经在构建设置添加的LLVM-GCC 4.2这些文件这显示错误没有这样的文件或目录的文件----- stdarg.h和float.h?

/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

我不知道如何删除此错误有助于删除此错误。

感谢

Balraj

+4

其他选项如果你接受一些答案,你更有可能让人们懒得回答 – Mark 2009-10-11 10:59:50

回答

1

这些标头不以它默认情况下使用Mac OSX上的gcc 4.2的支持。

切换到4.0版本(它被描述here

+0

实际上,我使用xcode sdk 3.1来使用该代码,并且还设置了由LLMV GCC 4.2构建的整个项目,并且在我添加它之后,只显示了两个这些目录文件错误,否则我使用gcc 4.0来执行它,因为它在链接中声明抛出很多错误,所以有什么办法在编译器目录中添加这些文件 请指导我! – Ballu 2009-10-12 14:24:23

+0

*你确定那些是错误的而不是警告吗?如果是后者,你可能会忽略它们。 *如果他们是错误,请考虑注释掉#include您遇到的问题。他们可能不会真正需要您的项目。 *否则,你可以看看这篇文章http://www.mailinglistarchive.com/[email protected]/msg17102.html 作者说,原因是缺少/ usr/lib/gcc中的标题/4.2/include(或附近的某处)。您可以尝试复制以前版本的gcc(例如4.0)中缺失的文件。 不幸的是,我无法检查是否有这些作品=( – 2009-10-12 15:13:22

+0

是啊,我已经死了肯定,这些错误不是警告 – Ballu 2009-10-12 15:18:46

0

我就遇到了这个问题为好,并改变GCC 4.0没有解决它适合我。我还必须将我的活动SDK(Xcode编辑器或控制台窗口左上角的下拉列表)从10.4(Base SDK)更改为10.6(我正在运行Snow Leopard)。

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

0

在安装SDL框架之后,我遇到了在xcode中构建我的Hello World应用程序的错误。按照本书的标准,将本书安装到带有xcode 3.3.2的Snow Leopard OSX 10.6.3中,抛出了这些错误:

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

因为它默认为SDK 10.4。

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

1

我遇到了同样的问题,并不能与所有其他的答案解决这里的问题, 所以我尝试:

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 

和编译错误消失了!

+0

工作!虽然对我来说略有不同,因为我在自定义位置安装了Xcode(而不是默认)。只要看看错误的路径。使用与此答案相同的路径。如果在模拟器上运行,'iPhoneOS'将会是'iPhoneSimulator',当然,'3.2.sdk'可能会有所不同,具体取决于您正在构建的SDK。 – ma11hew28 2011-07-05 23:48:22

+1

将最后一行缩短为'sudo ln -s ../ lib/gcc/arm-apple-darwin9/4.0.1/include/stdarg.h'。另外,我应该使用'arm-apple-darwin9'还是'10'?我要用'10'去。 – ma11hew28 2011-07-06 19:43:09

+0

有趣。然而(请原谅,如果我说明显),这似乎是一个测试,而不是一个实际的解决方案,对吗?对于大型团队或开源项目来说,这种事情可能会非常痛苦 - 黑客攻击系统级文件似乎从未成为一种好的做法。 – 2012-07-30 01:35:22

1

我已经在GCC 4.0编译器上进行了更改更改为LLVM编译器1.6为我工作。使用Mac OS X 10.7.3 Xcode 3.2.5

0

从我的测试中,根据上面提出的建议,问题与Base SDK版本紧密相关;也就是说,早期的SDK只能使用GCC 4.0,而后来的SDK可以使用GCC 4.0或4.2(以及更新的LLVM选项)。

总结选项应该工作:
的iOS 3.2及更早版本:适用于iOS的项目/目标

基地SDK GCC 4.0
的iOS 4.0及更高版本: GCC 4.0, GCC 4.2,LLVM GCC 4。2,LLVM锵

基地SDK适用于Mac OS X的项目/目标:
的Mac OS X 10.5及更早版本: GCC 4.0
的Mac OS X 10.6及更高版本: GCC 4.0,GCC 4.2, LLVM GCC 4.2,LLVM锵

0

添加像下面

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" 
相关问题