2009-10-11 310 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" 
相關問題