Используйте относительные пути в вашем dylib, используя install_name_tool.Таким образом, вы можете установить их один раз и установить этот каталог в любом месте без необходимости изменять ваши библиотеки во время установки.
Вы должны поместить все ваши зависимости dylib в одну папку, а затем использовать install_name_tool, чтобы установить относительное расположениедругие дилибы, от которых вы зависите.Предположим, что ваша библиотека libmyfoo.dylib зависит от libbar.dylib:
install_name_tool -change "/Whatever/full/path/libbar.dylib" "@loader_path/libbar.dylib" libmyfoo.dylib
Таким образом, ваша библиотека всегда будет искать libbar.dylib в том же каталоге, где находится libmyfoo.dylib.
Вам также может понадобиться запустить install_name_tool на некоторых других dylib, если они зависят друг от друга.
Осторожно, документация для install_name_tool указывает, что «этот инструмент работает, когдаимена установки или rpath больше, двоичный файл должен быть собран с опцией ld (1) -headerpad_max_install_names. ", поэтому обязательно включите опцию командной строки -headerpad_max_install_names
при сборке библиотеки.
@loader_path
isотносительно двоичного файла, используемого для загрузки dylib, в данном случае это ваш libmyfoo.dylib.Используйте @executable_path
, если вы хотите найти библиотеки, относящиеся к исполняемому файлу, который запустил последовательность загрузки библиотеки.