Условное связывание разделов в программе с помощью ввода командного файла компоновщика в компоновщик? - PullRequest
2 голосов
/ 15 октября 2010

Можно ли связать условно (например, if..else) с помощью командного файла компоновщика?

Предположим, у меня два двух условия, и мне нужно связать два разных раздела, проверив это условие вкомандный файл компоновщика при компоновке?

Я использую собственный компоновщик (звездное ядро ​​- разновидность gcc) из Freescale.

__ Kanu

1 Ответ

1 голос
/ 28 апреля 2011

Я не уверен, насколько точно ваш пользовательский компоновщик отличается от компоновщика GNU ld или похож на него, но вы упоминаете, что ваш набор инструментов похож или основан на GCC.GNU ld позволяет вам указать скрипт компоновщика в командной строке, используя --script=scriptfile или аналогичный параметр.Сценарии ld могут INCLUDE другие файлы сценариев (или фрагменты сценариев).Таким образом, вы можете поместить свои обычные вещи в common.link.config (например) и иметь два отдельных сценария настройки компоновщика, которые выглядят следующим образом:

/* option1.link.config */

INCLUDE common.link.config

/* stuff specific to option1 follows */

...

Неудивительно, что сценарий для варианта 2 может выглядеть так:

/* option2.link.config */

INCLUDE common.link.config

/* stuff specific to option2 follows */

...

Тогда вместо того, чтобы передавать условие через командную строку компоновщика, укажите либо option1.link.config, либо option2.link.config в качестве сценария конфигурации компоновщика.

Если вы в данный момент не используетеиспользуя скрипт, поскольку в компоновщик в цепочку инструментов встроен соответствующий скрипт по умолчанию, вы можете вывести этот скрипт по умолчанию с помощью ld -verbose и изменить его в качестве начальной точки для ваших пользовательских скриптов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...