Ада-95. Компилятор GNAT



         

Модель компиляции GNAT и общая согласованная Ада-библиотека


Эта информация может оказаться полезной для тех программистов, которые ранее использовали какой-либо другой Ада-компилятор использующий традиционную модель общей согласованной Ада-библиотеки, как описано в "Руководстве по языку программирования Ада 95".

Система компилятора GNAT не использует традиционную модель общей согласованной Ада-библиотеки.

Вместо этого, GNAT использует множество файлов с исходными текстами совокупность которых играет роль общей библиотеки.

Компиляция Ада-программы не генерирует никакой централизованной информации. Вместо этого в результате компиляции генерируются объектные файлы и ALI-файлы, которые предназначены для обработки редактором связей gnatbind

и компоновщиком gnatlink.

В традиционной Ада-системе компилятор читает информацию не только из файла с исходным текстом, который компилируется, но и из центральной библиотеки, что подразумевает зависимость текущей компиляции от того, что было скомпилировано ранее.

В частности:

При указании какого-либо модуля в спецификаторе with

компилятору будет представлена самая свежая версия этого модуля скомпилированного в общую библиотеку.

  • Встроенная подстановка (inline) будет эффективна только в случае когда необходимое тело уже было скомпилировано в общую библиотеку.

  • Компиляция какого-либо нового модуля может сделать устаревшими версии других модулей в общей библиотеке.

    В системе компилятора GNAT, компиляция одного модуля никогда не влияет на компиляцию каких-либо других модулей поскольку компилятор всегда читает только файлы с исходным текстом.

    Только изменение файлов с исходными текстами может повлиять на результаты компиляции.

    В частности:

    При указании какого-либо модуля в спецификаторе with

    компилятору будет представлена версия этого модуля соответствующий исходный текст которой будет доступен компилятору в процессе текущей компиляции.

  • Встроенная подстановка (inline) требует наличия и доступности для компилятора файлов с соответствующими исходными текстами тел пакетов и/или подпрограмм.


    Содержание  Назад  Вперед