clang错误:链接器命令失败,XCode 4.2命令行应用程序

时间:2012-02-29 20:19:13

标签: objective-c xcode4.2

我正在使用Stephen Kochan的书学习objective-c和XCode。对于其中一个分配,我需要从命令行实现AddressBook查找功能。我使用了之前项目中的两个类,添加了文件并且没有复制。所有在XCode中构建都很好,但是当我在命令行发出以下命令时:

clang -fobjc-arc -framework Foundation main.m -o ch19

我收到错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_AddresBook", referenced from:
      objc-class-ref in cc-bx2cgt.o
  "_OBJC_CLASS_$_AddressCard", referenced from:
      objc-class-ref in cc-bx2cgt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在AddresBook中没有拼写错误,我的班级名称有一个" s"。我尝试从我的项目中删除文件(AddresBook.h和.m和AddressCard.h和.m),添加和不复制。在XCode中构建和运行应用程序就可以了。

我怎样才能清除"输出引用并再次添加它们,以便我可以从命令行编译它?

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要添加其他文件对象代码。

clang -fobjc-arc -framework Foundation main.m AddressBook.m -o ch19或将它们编译为目标文件,然后将它们链接起来。

如果你想在命令行上这样做,你也应该使用xcodebuild。