2014-03-02 72 views
3

我想在Ubuntu上編譯Objective C中的程序,我已經安裝了GNUstep,設置了所有GNUSTEP_*環境變量,並安裝了叮噹聲,因爲我讀過gcc無法編譯帶有塊的Objective-C代碼(Objective-C'匿名'函數,只是要清楚:^ { })。目標C在Linux Foundation/Foundation.h上與clang編譯鏈接:找不到文件

我能得到什麼,當我運行此命令: clang hello.m -o hello

是:

hello.m:1:9: fatal error: 'Foundation/Foundation.h' file not found 
#import <Foundation/Foundation.h> 
     ^
1 error generated. 

我想這也: clang -L '/usr/include/GNUstep/Foundation/Foundation.h' hello.m -o hello

哪裏/usr/include/...是路徑Foundation.h文件在我的系統上;但我仍然得到相同的結果。

如何自動鏈接這些頭文件並編譯Objective-C?

謝謝!

+0

一般情況下,它更容易建立與GNUmakefile,而不是嘗試自己提供所有參數。請參閱http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/。 – echristopherson

+0

此外,'-L'用於指定一個* library * *目錄*,即.so或.dylib文件的位置,該文​​件的名稱也由'-l'提供。也許你正在考慮'-I/usr/include/GNUstep';這會告訴它* include *文件的根目錄在哪裏。在任何情況下,您都不會提供實際庫或頭文件的完整路徑(也可以提供庫文件的路徑,但很少這樣做)。 – echristopherson

+0

顯然你使用的是gcc objc運行時。哪個IIRC不支持塊。你應該更好地使用libobjc2 – mathk

回答

-1

可以使用GNUstep的,配置:

clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` hello.m -o hello 
+0

謝謝,我已經搬了一些東西。現在我沒有得到Foundation/Foundation.h的錯誤,但是這個: – tonix

+0

你得到這個:?? – mathk

+0

對不起,我離開了這一點: /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h:31:9:致命錯誤: 'objc/objc.h' 找不到文件 - 正如我可以假設叮噹聲沒有找到objc/objc.h文件,對嗎? 顯然,文件位於此路徑(我用的定位objc/objc.h命令): /usr/lib/gcc/x86_64-linux-gnu/4.7/include/objc/objc.h 所以我如何將它綁定到鏗鏘聲會在我啓動它時要看的路徑? – tonix

相關問題