【发布时间】:2014-04-03 18:30:12
【问题描述】:
我正在尝试在 Ubuntu 上用 Objective C 编译一个程序,我已经安装了 GNUstep,设置了所有 GNUSTEP_* 环境变量,并安装了 clang,因为我读到 gcc 无法使用块编译 Objective-C 代码(Objective-C '匿名' 函数,为了清楚起见:^ { })。
当我运行这个命令时我得到了什么:
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?
谢谢!
【问题讨论】:
-
一般来说,使用 GNUmakefile 构建比尝试自己提供所有参数要容易得多。见gnustep.it/nicola/Tutorials/WritingMakefiles。
-
另外,
-L用于指定 library 目录,即您也可以使用其名称的 .so 或 .dylib 文件的位置使用-l提供。也许你在想-I/usr/include/GNUstep;这将告诉它 include 文件的根目录在哪里。在任何情况下,您都不会提供实际库或头文件的完整路径(好吧,可以提供库文件的路径,但很少这样做)。 -
显然您正在使用 gcc objc 运行时。哪个 IIRC 不支持阻止。你最好使用 libobjc2
-
好的,我检查了存储库并安装了 libojc4,但我找不到 libobjc2,这是一个问题吗?
-
libobjc2 是来自 gnustep 的库:github.com/gnustep/gnustep-libobjc2
标签: objective-c compilation clang gnustep