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