我有一个现有的bundle / executable,我需要在其中添加一个新的dylib。
方法我已经尝试过:
将dylib复制到bundle&在info.plist中设置dyld_insert_libraries以加载库。这适用于我无法控制应用程序/包(或库,如果外部包)的位置的一个问题,并且相对路径(例如@executable_path)不能在info.plist中使用。
使用install_name_tool(-add_rpath,-id等)为库添加新路径。除非在那里改变路径,否则这似乎不起作用。 (库的名称/安装位置是正确的,并且已经多次检查过。)
对于这个问题是否有任何进一步的解决方案,甚至是我已经尝试过的解决方案(上图)的修改?
答案 0 :(得分:0)
您还可以设置环境变量DYLD_INSERT_LIBRARIES以在执行二进制文件时指向要注入的库。有关详细信息,请参阅https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/dyld.1.html。
答案 1 :(得分:0)
我已经制作了一个名为insert_dylib
的工具:https://github.com/Tyilo/insert_dylib
以下是使用信息:
Usage: insert_dylib [--inplace] [--weak] dylib_path binary_path [new_path]
以及如何使用它:
$ insert_dylib /usr/lib/libfoo.dylib test
The provided dylib path doesn't exist. Continue anyway? [y/n] y
Added LC_LOAD_DYLIB command to test_patched
$ diff -u <(otool -hl test) <(otool -hl test_patched)
...