我从apple的开源网站的源代码构建了一个自定义的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环境var,但它不起作用。这是我编译代码https://github.com/Jeswang/Compile-Issue的文件夹,任何建议或解决方案?
答案 0 :(得分:1)
实际上,我使用 install_name_tool 命令来更改库的链接:
install_name_tool -change /usr/lib/libobjc.A.dylib @executable_path/libobjc.A.dylib main
有用的链接:
mikeash.com: Friday Q&A 2009-11-06: Linking and Install Names