Ответ 1
Apple имеет несколько способов поиска разделяемых библиотек:
-
@executable_path
: относительно основного исполняемого файла -
@loader_path
: относительно ссылочного двоичного файла -
@rpath
: относительно любого из списка путей.
@rpath
- последнее дополнение, введенное в OS X 10.5.
Если, например, вы хотите иметь свой исполняемый файл в Contents/MacOS
и библиотеках в Contents/Libraries
, вы можете сделать следующее:
install_name_tool -id @rpath/Libraries/lib_this.dylib builddir/lib_this.dylib
и в исполняемом наборе верхнего уровня rpath
с:
install_name_tool -add_rpath @loader_path/.. myexecutable
и
install_name_tool -change builddir/lib_this.dylib @rpath/Libraries/lib_this.dylib myexecutable
Обратите внимание: что первый путь после -change
должен точно соответствовать тому, что в настоящее время находится в двоичном формате.
Если вы потерялись, otool -l -v myexecutable
расскажет вам, какие команды загрузки в настоящий момент находятся в исполняемом файле.
Подробнее см. man dyld
и man install_name_tool
.