使用install_name_tool在您的dylib中使用相对路径。这样,您可以将它们设置一次,并在任何地方安装该目录,而无需在安装时修改您的库。
您应该将所有的dylib依赖关系放入一个文件夹,然后使用install_name_tool来设置您所依赖的其他dylib的相对位置。假设你的库libmyfoo.dylib取决于libbar.dylib:
install_name_tool -change "/Whatever/full/path/libbar.dylib" "@loader_path/libbar.dylib" libmyfoo.dylib
这样,你的图书馆总是会libbar.dylib在libmyfoo.dylib所在的同一目录中。
您可能还需要在某些其他dylib上运行install_name_tool(如果它们互相依赖)。
当心,为install_name_tool的文件指出,“对于这个工具,当安装名称或rpaths较大二进制应与LD建工作(1)-headerpad_max_install_names选项。”,所以一定要包括构建库时的命令行选项-headerpad_max_install_names
。
@loader_path
是相对于用来加载dylib的二进制文件,在这种情况下是您的libmyfoo.dylib。如果您想查找与启动库加载顺序的可执行文件相关的库,请使用@executable_path
。
请注意,这是一个自动接受的赏金答案。据推测,这实际上并没有解决提问者的问题。 – 2010-02-03 22:02:16