Компілятор мови з в linux

Операційна система (ОС) Linux / Unix і мова C - "блізненци-брати". Згадайте, що мова програмування C був створений (Д.Рітчі, 1972 г) спеціально для написання ОС Unix, і з тих пір і "канонічна" ОС Unix, а також всі її клони і подібні їй ОС пишуться на мові C. Тому у всіх версіях Unix і Unix-подібних систем компілятор мови C в більшості випадків входить в комплект поставки системи.

Одним з перших програмних продуктів, створених в рамках проекту GNU, також з'явився компілятор мови С з відкритим кодом. Цей компілятор включається в поставку всіх версій ОС Linux.

Таким чином, середовище, в якому виконується наш лабораторний практикум надає у Ваше розпорядження 4 компілятора на вибір:
  • cc - стандартний компілятор мови C;
  • c ++ - стандартний компілятор мови C ++;
  • gcc - GNU-компілятор мови C;
  • g ++ - GNU-компілятор мови C ++.

Способи запуску і переважна більшість опцій всіх зазначених компіляторів ідентичні, вибір того чи іншого компілятора відбивається тільки на імені команди. Ми при підготовці лабораторного практикуму використовували компілятор gcc. тому в подальших прикладах будемо говорити саме про нього.

Компілятор мови C виконує як власне компіляцію - переклад вихідного тексту на машинну мову, результатом чого є об'єктний модуль, так і редагування зв'язків - збірку з кількох об'єктних модулів (в тому числі, і бібліотечних) виконуваного модуля.

Файли з вихідними текстами C-програм повинні мати розширення .c. наприклад: hello.c. Результатом компіляції є файл, який містить об'єктний модуль, його ім'я збігається з ім'ям вихідного модуля, а розширення - .o. наприклад: hello.o. Для файлу, що містить виконуваний модуль стандартного розширення не існує. При компіляції програми, що складається з єдиного вихідного модуля, об'єктний модуль автоматично видаляється після створення компілятором виконуваного модуля.

Загальний формат команди виклику компілятора має такий вигляд (компіляція в linux):

Найбільш часто вживані опції компілятора наступні:

Пригнічує фазу редагування зв'язків, створює об'єктний модуль для кожного вихідного модуля з перерахованих в параметрах виклику. Вихідний_файл з цією опцією не ставить. Опція може застосовуватися разом з опцією -I

Компіляція і редагування зв'язків. Створена об'єктний модуль для кожного вихідного модуля з перерахованих в параметрах виклику і мають розширення .c. Файли з розширенням .c розглядаються як вихідні модулі і компілюються; файли, що мають розширення .o. розглядаються як об'єктні модулі і підключаються при редагуванні зв'язків. Параметр вихідний_файл задає ім'я файлу модуля. Опція може застосовуватися разом з опціями -L. -l. -I.