Running C compiler

Основным назначением компилятора, как ни станно, является компиляция исходного кода. Но современные компиляторы умеют намного больше. Рассмотрим простейшие варианты вызова компилятора для создания исполняемой программы.

Нам потребуется файл исходного кода, который содержит определение функции main. В качестве примера, используем файл hello.c, с исходным кодом классической программы Привет, Мир!:

#include <stdio.h>

int main(void)
{
  puts("Привет, Мир!");
  return 0;
}

Существуют разные реализации компилятора языка C (например, gcc, clang, cl или emcc). На многих платформах доступна команда cc, которая является псевдонимом компилятора, используемого по-умолчанию.

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

Запуск компилятора:

$ cc hello.c

Можно ожидать, что компилятор создаст программу hello. Но, вопреки ожиданиям, компилятор создасть программу с базовым именем a (в зависимости от платформы, это будет: a.out, a.exe или, даже, a.out.js вместе с a.out.wasm). Хотя, компилятор создал исполняемую программу и её можно запустить, этот вариант устроит не многих.

Задать имя будующей программы (или выходного файла) помогут два дополнительных аргумента:

  • Флаг -o (от output);
  • Имя выходного файла.

Запуск компилятора c указанием имени выходного файла:

$ cc -o hello hello.c

Компилятор создаст исполняемую программу с базовым именем hello и в зависимоти от целевой платформы, возможно, добавит стандартное для исполняемых файлов расширение. Можно указать полное имя файл с расширением (например: hello.exe на платформах семейства Windows), но это не является обязательным.

Запускаем программу:

$ ./hello
Привет, Мир!

Сказанное выше, справедливо и для компиляторов языка C++ с точностью до названия команды вызова компилятора.