Недавно я столкнулся с этой документацией об Apple и загрузке динамических библиотек.
Приводя:
Когда имя библиотеки является именем файла (то есть, когда оно не включает имена каталогов), динамический загрузчик ищет библиотеку в нескольких местах, пока не найдет ее, в следующем порядке:
- $ LD_LIBRARY_PATH
- $ DYLD_LIBRARY_PATH
- Рабочий каталог процесса
- $ DYLD_FALLBACK_LIBRARY_PATH
И меня беспокоит третий шаг «Рабочий каталог процесса».
Поскольку я загружаю библиотеки (и загружаемые библиотеки будут загружать другие), я бы хотел, чтобы в рабочем каталоге был какой-то предопределенный путь.
В начале main
уже слишком поздно для меня.
Знаете ли вы, есть ли какая-то опция сборки, которую я могу установить в pkgbuild
или в каком-нибудь файле .plist
?
Знаете ли вы обходной путь для этого?
EDIT:
Я нашел эти клавиши , которые можно установить, в частности см. LSEnvironment
.
Я думал, может быть, какой-то "взломать", как
$DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$DYLD_FALLBACK_LIBRARY_PATH
(да, я знаю, что это ужасно ...). Но это все равно не сработает, потому что цитируем предыдущую ссылку:
Эти переменные среды устанавливаются только для приложений, запускаемых через Launch Services. Если вы запускаете свой исполняемый файл непосредственно из командной строки, эти переменные среды не устанавливаются.
Итак, что я могу сделать, если кто-то вызывает мой исполняемый файл напрямую?
Рассматриваются ли вообще файлы .plist
в случае непосредственного вызова исполняемого файла?