objective-c - 要链接哪个 OSX 库(命令行)以使用 NSLog?

标签 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 时,我需要链接到一个库。我需要链接哪个库?

最佳答案

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

clang -framework Foundation -o hello hello.m

关于objective-c - 要链接哪个 OSX 库(命令行)以使用 NSLog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940357/

相关文章:

objective-c - 在 switch 语句中使用(动画) block 时崩溃

ios - UILabel负行间距

objective-c - 在 init 中设置和发送自定义委托(delegate)方法?

macos - 在 Docker 中创建新容器时遇到问题。来自守护进程的错误响应 : Conflict. 容器名称已被容器使用

macos - 如何在我的新 MacBook Pro(配备 Mac OS Catalina)上安装 openMP?

ios - XCode 未定义引用

c++ - 为嵌套模板类声明 operator==

ios - UITableViewCells 在 tableview 首次加载时闪烁

XCode 链接静态库 (GLEW) 尝试 dylib 加载

android - Flutter - 像素溢出的不明原因