2017-01-09 3 views
0

У нас есть проект, который динамически связывается с несколькими dylib. При копировании сборки на другой Mac. Нужно запустить «otool» над dylib и исполняемым файлом, чтобы исправить общие пути библиотек в них во время «установки».dylib to dylib pathing на mac osx, как заставить rpath работать на mac?

Похоже, что у OSX были некоторые странные требования для DLL-трассировки DLL, из-за которых в них не работали относительные пути (т. Е. Использование rpath). Мои вопросы здесь:

  1. Каков нормальный способ отправки программного обеспечения на Mac? i.e: при запуске установщика .pkg или .dmg, как убедиться, что установленные dylibs могут связываться друг с другом в относительном пути? путь dylib должен быть исправлен либо с помощью rpath, либо с некоторыми сценариями установки после установки

  2. Если нам не разрешено запускать скрипт установки после установки, какие другие параметры?

ответ

0

Относительные пути должны работать нормально. Например, предположим, что пакет приложений macOS. Приложение работает в Contents/MacOS, а библиотека живет в Contents/Frameworks. В этом случае вы перекликаете библиотеки приложений примерно так: @executable_path/../Frameworks/library.so. Если вы не используете пакет приложений, но должны иметь все файлы в одном каталоге, просто используйте @executable_path.

В этих примерах не нужно использовать @rpath. вы также можете использовать это, но для этого приложения требуется определить этот путь. Это может быть полезно, если вы хотите распространять библиотеку, и люди должны ссылаться на вашу библиотеку. Таким образом, они могут дать @rpath в своем приложении, чтобы найти библиотеку без otool.

И вы, конечно, делаете эти изменения перед своим пакетом до вашего приложения в .dmg или .pkg.

Смежные вопросы