Компоновщик gnatlink
Компоновщик gnatlink используется для компоновки Ада-программ и построения исполняемых файлов.
Эта простая программа вызывает компоновщик системы (через команду gcc/gnatgcc) и предоставляет ему корректный список ссылок на объектные и библиотечные файлы.
Программа gnatlink выполняет автоматическое определение списка необходимых файлов для сборки Ада-программы.
Для определения этого списка файлов gnatlink использует файл сгенерированный редактором связей gnatbind.
Команда запуска компоновщика gnatlink имеет следующий вид:
$ gnatlink [switches] mainprog[.ali] [non-Ada objects] [linker options] |
В данном случае, файл mainprog.ali является ALI-файлом главной программы.
Расширение имени файла .ali может не указываться, поскольку такое расширение имени файла подразумевается по умолчанию.
Из этой команды компоновщик gnatlink определяет соответствующий файл b~mainprog.adb, который генерируется редактором связей gnatbind, и, используя информацию из этого файла, вместе со списком не Ада-объектов и опций компоновщика, конструирует команду для запуска компоновщика системы, в результате выполнения которой выполняется построение результирующего исполняемого файла.
Аргументы команды, которые следуют за mainprog.ali
передаются компоновщику без какой-либо дополнительной интерпретации.
Обычно такие аргументы содержат имена объектных файлов модули которых написаны на других языках программирования, а также ссылки на библиотечные файлы которые необходимы для модулей написанных на других языках программирования или используются директивами компилятора pragma Import в модулях Ада-программы.
Список linker options (опции компоновщика) - это не обязательный список опций, которые специфичны для компоновщика,
По умолчанию, в качестве компоновщика используется gcc (gnatgcc), который вызывает соответствующий системный компоновщик, обычно называемый ld.
При этом, как обычно, могут быть представлены стандартные опции компоновщика, такие как -lmy_lib или -Ldir.
Для опций, которые не распознаются gcc (gnatgcc) как опции компоновщика должны использоваться -Xlinker или -Wl,.
Для получения более детальной информации необходимо обратиться к документации на GCC.
Примером того как выполнить генерацию компоновщиком файла-карты (linker map file), подразумевая, что используется системный компоновщик ld, может служить следующее:
$ gnatlink my_prog -Wl,-Map,MAPFILE |
Компоновщик gnatlink определяет список объектов, необходимых для Ада-программы, и предваряет их списком объектов передаваемых компоновщику.
Кроме того, gnatlink собирает любые аргументы установленные директивой компилятора pragma Linker_Options и добавляет их к списку аргументов передаваемых компоновщику системы.