Зависимые от предшествующего пути развития выполнением библиотеки
Пользователи приложения часто должны организовывать свои приложения в их файловых системах в пути, делающем их более эффективными для использования. Эта возможность проста предусмотреть единственный двоичный файл, потому что расположение его зависимых библиотек просто определить: Они могут находиться в стандартном расположении в файловой системе или в расположении относительно самого двоичного файла. Однако при контакте с рядом приложений, совместно использующих зависимые библиотеки (например, в пакете приложений), предоставляя пользователям, возможность переместить каталог комплекта является более трудной: Или зависимые библиотеки комплекта должны быть расположены вне каталога комплекта, или каждая из исполнимых программ комплекта должна быть соединена, приняв во внимание его позицию в комплекте. В OS X v10.5 и позже компоновщик и динамический загрузчик предлагают простой способ позволить многократным исполнимым программам в каталоге пакета приложений совместно использовать зависимые библиотеки при обеспечении пользователей комплекта опция перемещения каталога комплекта. Пользование зависимыми от предшествующего пути развития выполнением библиотеками, можно создать структуру каталогов, содержащую исполнимые программы и зависимые библиотеки, которые пользователи могут переместить, не повреждая его.
Зависимая от предшествующего пути развития выполнением библиотека является зависимой библиотекой, полное имя установки которой не известно, когда библиотека создается (см., Как Динамическими Библиотеками Пользуются). Вместо этого библиотека указывает, что динамический загрузчик должен разрешить имя установки библиотеки, когда это загружает исполнимую программу, зависящую от библиотеки.
Для пользований зависимыми от предшествующего пути развития выполнением библиотеками исполнимая программа обеспечивает список путей поиска пути выполнения, которые динамический загрузчик пересекает во время загрузки для нахождения библиотек.
Эта статья описывает, как создать зависимые от предшествующего пути развития выполнением библиотеки и как использовать их в исполнимых программах.
Создание зависимых от предшествующего пути развития выполнением библиотек
Для создания зависимой от предшествующего пути развития выполнением библиотеки Вы указываете относительный путь пути выполнения как имя установки библиотеки. Относительный путь пути выполнения использует @rpath
макрос для указания пути относительно каталога, который будет определен во время выполнения. Относительный путь пути выполнения использует следующий формат:
@rpath/<path_to_dynamic_library> |
Это примеры относительных путей пути выполнения:
@rpath/libMyLib.dylib
@rpath/MyFramework.framework/Versions/A/MyFramework
Имя установки пути выполнения является именем установки, использующим относительный путь пути выполнения. Вы указываете имя установки пути выполнения при создании зависимой библиотеки с помощью gcc -install_name
опция. Посмотрите gcc
страница справочника для получения дополнительной информации.
Используя зависимые от предшествующего пути развития выполнением библиотеки
Для пользований зависимыми от предшествующего пути развития выполнением библиотеками (те, которые используют путь выполнения, устанавливают имена) на исполнимой программе Вы указываете один или несколько путей поиска пути выполнения с ld -rpath
опция (каждый -rpath
пункт указывает одно расположение пути выполнения). Когда динамический загрузчик (dyld
) загружает исполнимую программу, она ищет зависимые от предшествующего пути развития выполнением библиотеки в путях поиска пути выполнения в порядке, в котором они были указаны во время ссылки.
Это - пример списка путей поиска пути выполнения:
@loader_path/../Library/Frameworks |
@loader_path/../Library/OpenSource |
/usr/lib |