XCode не ищет @rpath для dylibs? - PullRequest
0 голосов
/ 26 февраля 2019

В моем проекте XCode у меня есть несколько динамических библиотек, которые я создал с префиксом "@ rpath / lib".Я добавил фазу сборки «copy files», которая включает эти dylibs.Они устанавливаются в папку с именем lib в Frameworks.Я также установил путь поиска Runpath в "@loader_path /../ Frameworks", который должен быть заменен на @rpath при запуске исполняемого файла.DLYD смотрит на путь выполнения моего двоичного файла, который я проверяю, используя команду -l для двоичного файла.В результате получается:

Load command 47
          cmd LC_RPATH
      cmdsize 40
         path @loader_path/../Frameworks (offset 12)

Поэтому я предполагаю, что при запуске моего двоичного файла DLYD разрешит путь к папке lib через двоичный файл MACH-O.

Когда я запускаю свой проект, я используюМонитор активности для проверки файлов, открытых в бинарном файле.Я не вижу ссылок на мои динамические библиотеки из @loaderpath /../ Frameworks / lib, где они находятся, вместо этого я вижу ссылки на них из / usr / local / lib.

Какие настройки XCode я устанавливаю, чтобы мои динамические библиотеки были правильно найдены?Я использовал пользовательскую настройку сборки 'DYLD_PRINT_BINDINGS', чтобы посмотреть, что связывает, и я не вижу, чтобы мои библиотеки были связаны, даже если они в конечном итоге связаны с библиотеками в / usr / local / lib

1 Ответ

0 голосов
/ 26 февраля 2019

Я нашел сценарий, который я разработал некоторое время назад, который я использовал для копирования .dylib s в каталог .app s Framework и обнаружения зависимых библиотек, исправляя ссылки на библиотеки с помощью install_name_tool.Это должно быть установлено как сценарий после сборки.

https://github.com/trojanfoe/xcodedevtools/blob/master/copy_dylibs.py

Я не проверял это некоторое время.Репозиторий также содержит скрипт, который я сейчас использую, чтобы поднять номера сборки , согласно моего вопроса .

...