2011-09-29 57 views
2

我一直負責到的.o在Xcode 4我曾嘗試以下命令,在NSObject的類適用於iOS的一個項目文件創建對象編譯Objective-C的文件到目標文件(.o)

gcc -c implemtationfile.m 

但如果我嘗試運行從UIViewController的繼承例如我得到一個類的命令一噸的錯誤的開始

UIKit/UIKit.h: No such file or directory 

其次,由於在項目的多個文件,是有可能創造一個。 o文件的所有源文件?

謝謝

回答

4

不奇怪你有錯誤。

您正在嘗試從OSX編譯iOS代碼。如果您從終端調用GCC,您將獲得Mac OS X編譯器。

即使它可以生成.o文件,這些目標文件也是Mach-O目標文件,這意味着它們被編譯爲Mac OS X編譯器工具鏈中的目標文件。

這裏沒有iOS。您的目標文件將具有Intel(x86)或PPC體系結構。 iPhone是ARM,所以你被浪費了。

您應該能夠使用正確的GCC編譯器工具鏈繼續ARM對象文件。

喜歡的東西:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.0.1 

我沒有測試過,但顯然,你需要使用GCC的iPhone ARM版。只要調用GCC就會調用Mac OS X版本(在/ usr/bin /中)。

像GCC這樣的編譯器需要爲主機和目標體系結構編譯。

主機體系結構是您將在其中調用編譯器的體系結構。 目標之一是您將爲其構建二進制文件或對象文件的體系結構。

因此,嘗試使用適合iPhone目標架構的正確版本的GCC來編譯代碼。

另外請注意,如果編譯一個框架,你應該使用-framework GCC參數。

相關問題