希望是简单的问题。我正在尝试使用 clang 从命令行学习基本的 Objective-C 编译。我知道 Xcode 对于复杂的项目来说是一个更好的解决方案,我计划很快转向它,但我个人觉得如果我可以在终端中手动编译一门语言,我会更好地理解它,而对于小型的入门性编程项目,我发现它不太适合在终端中编译比启动一个新项目更麻烦。
所以问题是:如何编译一个由多个文件组成的 Objective-C 程序(从命令行)? (我正在尝试执行 Kochan 教科书第 7 章中的分数程序,其中包含 #import“Fraction.h”的 main.m 和 Fraction.m 文件,以及导入 Foundation 框架的 Fraction.h 文件。)要编译单个文件,我使用类似的东西
clang -fobjc-arc main.m -o prog1
但是,如果我输入该内容并且想要在项目中包含 main.m 以外的文件,则会收到错误,包括:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果我尝试将附加文件作为参数添加到命令中,例如
clang -fobjc-arc main.m Fraction.h Fraction.m -o prog1
然后我得到
clang: error: cannot specify -o when generating multiple output files
如果我然后删除 -o 参数,例如
clang -fobjc-arc main.m Fraction.h Fraction.m
然后我得到一大堆错误,所有错误都涉及基础框架,最终以“致命错误:发出太多错误,立即停止”结束。
我该如何做到这一点并使其发挥作用?或者我是否需要忍受它并在涉及多个文件时立即使用 Xcode?