我想使用命令行编译器从MAC OSX上的命令行编译和链接应用程序。我有一个名为“hello.m”的源文件,如下所示:
#import <Foundation/Foundation.h>
int main(int argc,char *argv[])
{
NSLog(@"hello world\n");
return 0;
}
在命令提示符下,我输入:
$ clang -o hello hello.m
但编译器返回:
Undefined symbols for architecture x86_64:
"_NSLog", referenced from:
_main in main-74f615.o
ld: symbol(s) not found for architecture x86_64
显然,当我调用NSLog时,我需要链接一个库。我需要链接哪个库?
答案 0 :(得分:3)
您需要链接的图书馆是“基础”。这是您在文件顶部导入的框架。如果是在Xcode中,它会通过项目设置/自动化框架检测为您设置框架链接。直接使用clang时,需要传递-framework
标志才能正确链接到它们。
clang -framework Foundation -o hello hello.m