Немного о компиляции и сборке
Конечно, сейчас нет необходимости уметь компилировать приложение в командной строке, потому что современные среды программирования идут в нагрузку с компилятором, и весь запуск процесса сборки занимает выбор пункта меню или нажатие комбинации клавиш. Однако, в рамках общего развития полезно знать, как же это всё-таки делается - собирается приложение из исходных файлов, тем более что это совсем нередкая ситуация для пользователей ОС Linux.
Любое приложение консольного типа может запускаться с набором ключей (параметров). Для того, чтобы знать, какие ключи может принимать это приложение, необходимо запустить его с ключом --help или -h, в зависимости уже от реализации самого приложения. Например, об использовании компилятора GNU C++ можно узнать, выполнив следующую команду:
Чтобы скомпилировать файл main.cpp в файл file[.exe] достаточно написать следующую строку:
На самом деле можно попробовать запустить компиляцию файла только с указанием имени файла, но в этом случае компиляция будет успешна только в случае если программа использует только стандартную бублиотеку С, а полученный исполняемый файл будет называться a[.exe]. Поэтому ключ -o указывает, как будет называться выходной файл, то есть file. Ключ -l указывает, что к сборке результата необходимо добавить стандартную библиотеку С++. По правилам подключения библиотек программирования в ОС Linux, если файл библиотеки называется libfilename.a, то для подключения достаточно прописать -l filename. Либо указать полное имя библиотеки.
Кстати, между ключом и значением можно не ставить пробел, то есть записать предыдущую команду можно следующим образом:
Если проект приложения состоит из нескольких файлов, то для сборки приложения можно указать все компилируемые файлы:
Помните, что заголовочные файлы не комилируются!
Однако можно скомпилировать каждый файл в объектный, после чего из полученных файлов собрать приложение. В этом случае процесс сборки приложения в командной строка будет выглядеть следующим образом:
Выполнять компиляцию каждого файла и исборку приложения - это становится утомительной процедурой. Поэтому для автоматизации данного процесса используют программу make и скрипты Makefile (файл сборки). Ниже прведен листинг Makefile.01, эквивалентный по функциональности командам compiler 05
Правила написания makefile следующие:
каждый элемент документа есть структура
каждая зависимость это определенная в документе Makefile цель или имя файла.
Целью может быть имя получаемого файла.
Цель может иметь несколько зависимостей, или не иметь вовсе. Если цель имеет зависимости, то сначала выполняются они, в том порядке, как они перечислены, а потом команда цели.
В рамках файла сборки можно определять переменные, что позволяет Makefile делать более настраиваемым. Например, в Makefile.02 сначала определены компилятор, выходной файл и флаги компиляции и сборки. Это позволяет легко настраивать процесс сборки программы.
Last updated