Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lection11_компиляторы.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
234 Кб
Скачать
☆

Двоичные форматы elf и a.Out

Существуют два формата, которые могут использоваться при создании двоичных файлов (например, файлов исполняемых программ). Первый из них именуется a.out. Этот формат является исходным форматом, используемым для систем UNIX и первых версий Linux. Название формата в данном случае происходит от стандартного имени исполняемого файла, создаваемого компилятором С системы UNIX. Но в связи с ши­роким применением совместно используемых библиотек возникли трудности с форма­том a.out. Адаптация формата a.out с целью применения совместно используемых биб­лиотек является весьма сложной процедурой. Поэтому, начиная с четвертой версии UNIX System 5 и операционной системы Solaris, был предложен новый формат. Он получил название ELF (Executable and Linking Format — формат компоновки и испол­нения). Целью разработки этого формата было упрощение работы с совместно исполь­зуемыми библиотеками.

Формат ELF был адаптирован с целью применения в качестве стандартного формата Linux. Все двоичные файлы, создаваемые компилятором gcc, имеют формат ELF (не­смотря на то, что стандартное название исполняемого файла, создаваемого в результате функционирования компиляторов, осталось прежним — a.out). Более старые программы, имеющие формат a.out, также могут выполняться системами, поддерживающими фор­мат ELF.

Языки C++ и Objective С: команда g++

Утилита gcc выполняет также функции компилятора языка C++. Она может счи­тывать и компилировать любую программу на языке C++. Однако она не позволяет выполнять автоматическую компоновку с вызовом библиотеки классов C++. Эта биб­лиотека должна вызываться отдельно, с использованием режима командной строки. Для этого можно также воспользоваться командой c++, в результате чего вызывается компилятор gcc вместе с библиотекой классов C++.

Для файлов исходного кода на языке C++ используются расширения, отличающие от расширений обычных файлов кода на языке С. Компилятору C++ соответствует множество различных расширений: С, cc, cхх или срр. Если не принимать во внимание это различие, то компиляция программ C++ проходит точно так же, как и компиляция программ С. Вместо команды gcc рекомендуется использовать команду c++. В сле­дующем примере показано, как должна быть выполнена компиляция программы myprog.cpp, написанной на языке C++.

$ c++ myprog.с -о myprog

Компилятор gcc также поддерживает программы Objective-C. Этот язык програм­мирования является объектно-ориентированной версией языка С, изначально разрабо­танной для операционных систем NeXt. Для компиляции программы на языке Objective-C необходимо использовать команду gcc с параметром -lobjc, с помощью которого обеспечивается компоновка с библиотекой классов Objective-C, libobjc.so.

Другие компиляторы: Паскаль, Ада, Лисп и Фортран

Операционная система Linux поддерживает значительное число языков программи­рования. Многие из них могут быть установлены с комакт-диска OpenLinux. В допол­нение к программам на языках С и C++ программист имеет возможность выполнять компиляцию программ, написанных на языках Паскаль, Ада, Лисп, Бейсик и Фортран. В некоторых случаях компиляция выполняется с помощью компилятора gcc, приспо­собленного для обработки исходного кода других языков программирования. Например, G77 является GNU-компилятором для языка Фортран. Этот компилятор объединен с компилятором gcc. Команда g77 скомпилирует программу на языке Фортран путем вызова компилятора gcc с параметрами, необходимыми для распознавания кода на Фортране. При этом используется опция G77 компилятора gcc. Компилятор для языка Ада 95 называется gnat. Справочный файл по языку программирования Ада содержит подробные сведения об этом компиляторе. Для компиляции программ на языке Ада необходимо использовать команду gnatmake с указанием названия файла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]