Как просмотреть список местоположений, встроенных в приложение, в котором выполняется поиск при разрешении ссылок @rpath на библиотеки? - PullRequest
0 голосов
/ 03 июля 2019

otool -L someApp Показывает группу фреймворков, на которые ссылается

@rpath/../Frameworks/Blah.framework/...

Насколько я понимаю, загрузчик / динамический компоновщик использует список расположений, встроенных в someApp, для генерации возможных путей к каркасам путем их замены вместо директив @rpath. Но я не знаю, как увидеть этот список мест.

Так как мне увидеть этот список?

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Пути, которые приложение вносит в rpath, являются частью его команд загрузки.Вы можете показать команды загрузки, используя otool -lV <path>.Чтобы загрузить команды, добавляющие пути к rpath, введите команду LC_RPATH.Итак, чтобы увидеть все это, вы можете использовать:

otool -lV <path> | grep -B 1 -A 2 LC_RPATH

Все это говорит о том, что rpath является динамическим.Когда процесс загружает библиотеку, эта библиотека может добавлять вещи в rpath, по крайней мере, для вещей, от которых это зависит.

0 голосов
/ 06 июля 2019

Загрузчик называется dyld, а пути поиска по умолчанию, которые находятся в некоторых переменных среды, подробно описаны на странице man dyld. Например,

       [B]DYLD_FALLBACK_FRAMEWORK_PATH[/B]
              This  is  a  colon  separated  list  of directories that contain
              frameworks.  It is used as the default location  for  frameworks
              not found in their install path.

              By    default,    it   is   set   to   /Library/Frameworks:/Net-
              work/Library/Frameworks:/System/Library/Frameworks

       [B]DYLD_LIBRARY_PATH[/B]
              This is a colon  separated  list  of  directories  that  contain
              libraries.  The dynamic linker searches these directories before
              it searches the default locations for libraries. It  allows  you
              to test new versions of existing libraries.

              For  each  library that a program uses, the dynamic linker looks
              for it in each directory in DYLD_LIBRARY_PATH  in  turn.  If  it
              still  can't  find  the  library,  it  then  searches DYLD_FALL-
              BACK_FRAMEWORK_PATH and DYLD_FALLBACK_LIBRARY_PATH
              in turn.

              Use the -L option to otool(1).  to discover the  frameworks  and
              shared libraries that the executable is linked against.

       [B]DYLD_FALLBACK_LIBRARY_PATH[/B]
              This  is  a  colon  separated  list  of directories that contain
              libraries.  It is used as the default location for libraries not
              found  in  their  install  path.   By  default,  it  is  set  to
              $(HOME)/lib:/usr/local/lib:/lib:/usr/lib.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...