我刚刚发现@rpath使用dlopen加载.dylib文件,需要一些帮助来理解它们。我在OSX机器上使用Xcode 3.2.5。
我有几个调用其他.dylib的.dylib,并且还会互相调用。 @rpath似乎适用于加载的初始.dylib,但是一旦我使用另一个.dylib进行dlopen调用,该ddpen使用先前使用@rpath找到并加载的第一个.dyblib文件,dlopen将失败说它可以找不到原始的.dylib。
@rpath是否仅适用于与dlopen一起使用的文件,还是用于解析正在打开的dylib文件中的依赖项?
更新
我的进一步发现使我使用install_name_tools来更改相互依赖关系以使其具有@rpath。这是正确的做法吗?
答案 0 :(得分:1)
经过数天的研究和反复试验,我发现我需要在所有我的.dylibs上使用@ rpath / dylibName.dylib作为我打算使用相对路径的所有库的安装名称进行-install_name找到。