哪个OSX库要链接(命令行)才能使用NSLog?

时间:2016-12-02 20:29:37

标签: objective-c macos clang

我想使用命令行编译器从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时,我需要链接一个库。我需要链接哪个库?

1 个答案:

答案 0 :(得分:3)

您需要链接的图书馆是“基础”。这是您在文件顶部导入的框架。如果是在Xcode中,它会通过项目设置/自动化框架检测为您设置框架链接。直接使用clang时,需要传递-framework标志才能正确链接到它们。

clang -framework Foundation -o hello hello.m