Рейтинг@Mail.ru

Наши друзья и партнеры

UnixForum




Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Linux-инструменты для Windows-программистов
Назад Компиляция и сборка приложений Вперед

Компиляция и сборка приложений

Основным компилятором Linux является GCC, но могут использоваться и другие, примеры таких других:
  • а). компилятор CC из состава IDE SolarisStudio,
  • б). активно развивающийся в рамках проекта LLVM компилятор Clang (кандидат для замены GCC в FreeBSD, причина — лицензия),
  • в). PCC (Portable C Compiler) — новая реализация компилятора 70-х годов, широко практикуемый в NetBSD и OpenBSD.

GCC имеет значительные синтаксические расширения (главным из которых являются инлайновые ассемблерные вставки), не распознаваемые другими компиляторами - поэтому альтернативные компиляторы вполне пригодны для сборки приложений, но непригодны для пересборки ядра Linux и сборки модулей ядра.

Начало GCC было положено Ричардом Столлманом, который реализовал первый вариант GCC в 1985 на нестандартном и непереносимом диалекте языка Паскаль; позднее компилятор был переписан на языке Си Леонардом Тауэром и Ричардом Столлманом и выпущен в 1987 как компилятор для проекта GNU (http://ru.wikipedia.org/wiki/GCC).

Официальный сайт GCC - http://gcc.gnu.org/:

The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada, and Go, as well as libraries for these languages (libstdc++, libgcj,...).

Компиляция 2-х фазная:
  • на начальной стадии (front end) лексического анализатора, в зависимости от языка программирования, происходит синтаксическое распознавание исходного кода и преобразование к структурам на основе деревьев, и промежуточному RTL-представлению (RTL - Register Transfer Language, язык межрегистровых пересылок), напоминающему S-выражения языка LISP.
  • конечная стадия (back end) генерации кода принимает с предыдущей стадии языково независимые RTL-инструкции и создает код, работающий на заданной платформе.

Существуют дополнительные front-end’ы для языков Pascal, D, Модула-2, Modula-3, Mercury, VHDL и PL/1.


Предыдущий раздел: Оглавление Следующий раздел:
Команды диагностики оборудования   Компилятор GCC

Поделиться: