【问题标题】:Trouble when linking Objective-C program with my own libobjc.A.dylib将 Objective-C 程序与我自己的 libobjc.A.dylib 链接时出现问题
【发布时间】:2014-08-31 10:08:51
【问题描述】:

我从苹果开源网站的源代码构建了一个自定义的 libobjc.A.dylib,我想通过使用 dylib 编译一个简单的程序来调试它,但似乎 clang 总是使用系统 libobjc.A.dylib。

编译命令为:

xcrun --sdk macosx10.8 clang main.m -std=c99 -framework Foundation -lobjc -I./usr/include -L.

libobjc.A.dylib 位于当前文件夹中。 otool 命令告诉我程序链接到哪个库:

~ otool -L a.out
a.out:
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.18.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.19.0)

http://opensource.apple.com/source/objc4/objc4-551.1/test/test.pl 文件中,它使用了一个名为 -fno-objc-link-runtime 的标志,但它似乎不适用于我的笔记本电脑(mac 10.9.4,xcode 5.1.1)

尝试设置 DYLD_LIBRARY_PATH 环境变量,但它不起作用。这是我编译代码https://github.com/Jeswang/Compile-Issue的文件夹,有什么建议或解决方案吗?

【问题讨论】:

    标签: objective-c linker runtime clang


    【解决方案1】:

    其实我是用install_name_tool命令来改变库的链接的:

    install_name_tool -change /usr/lib/libobjc.A.dylib @executable_path/libobjc.A.dylib main
    

    有用的链接:

    dyld manual

    mikeash.com: Friday Q&A 2009-11-06: Linking and Install Names

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多