Я не уверен, насколько точно ваш пользовательский компоновщик отличается от компоновщика 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
и изменить его в качестве начальной точки для ваших пользовательских скриптов.