В Mac OS X двоичные исполняемые файлы в формате DYLD содержат "команды загрузчика", которые инструктируют систему загрузки библиотеки, как обрабатывать содержимое файла. В частности, команда загрузчика сообщает системе, в которой необходимо искать зависимые библиотеки, и т.д.
Вы можете увидеть полный список команд загрузчика для любого двоичного файла в вашей системе, запустив "otool -l/path/to/your/app".
Вообще говоря, эти команды загрузчика устанавливаются инструментом "ld" во время фазы компоновки компиляции проекта.
Мой вопрос: что мне нужно сделать, чтобы добавить команды загрузчика для публикованных типов, которые не поддерживаются (по-видимому) ld?
В частности, я хотел бы воспользоваться коммандой загрузчика LC_DYLD_ENVIRONMENT, который можно использовать для указания строки в таблице команд загрузчика двоичного файла, которая должна быть загружена и оценена как параметры переменной среды в контексте исполняемого файла.
Я не вижу никаких аргументов для ld, которые облегчили бы это. Что-то вроде "-sectcreate", но для конкретного добавления к содержимому команд загрузчика - это то, что мне нужно.
Я знаю, что это возможно, потому что по крайней мере одно стандартное приложение в Mac OS X использует его: Safari. Но я не знаю, достигли ли они этого путем какого-либо пост-связанного массажа двоичного файла, если они используют пользовательскую версию ld, которая знает, как построить и связать команду пользовательского загрузчика, или если они используют общая черточка команды ld, которую я не смог выяснить.