Компиляция в Linux: 3 шага к созданию двоичных файлов 🔥
Ключевое резюме
- Большинство программного обеспечения компилируется из исходного кода в три этапа:
./configure && make && make install
. - Сценарий настроить проверяет зависимости, делать генерирует исполняемый файл и такие инструменты, как autoconf/automake автоматизировать этот процесс.
- Установка обычно необязательна, что упрощает запуск команд, скопированных в каталоги в
ПУТЬ
системы.
Компиляция из исходного кода может показаться сложной задачей по сравнению с использованием менеджеров пакетов, но с помощью трех основных команд процесс становится простым и понятным. 🚀
Что такое компиляция из исходного кода?
Используемые вами программы могут быть интерпретируемыми или компилируемыми. Интерпретируемые программы — это текстовые файлы с кодом, который другая программа (интерпретатор) выполняет в режиме реального времени. Скомпилированные же программы — это двоичные файлы с машинным кодом, готовым к выполнению.
Скомпилированные исполняемые файлы очень распространены, особенно в больших программах. При компиляции из исходного кода выsas компилятор вроде gcc
для преобразования кода в исполняемую программу, часто распределенную по нескольким файлам.

Процесс компиляции может быть обширным и сложным, поэтому его обычно автоматизируют с помощью таких программ, как делать
. Файлы make-файлы контролировать, как будет построен конечный исполняемый файл.
В крупных проектах эти make-файлы Они могут быть настолько сложными, что их автоматически генерируют такие инструменты, как автоконф и автопроизводитель для обеспечения совместимости с различными архитектурами. 🛠️
3-этапный процесс сборки: настройка, изготовление, установка
Большинство программного обеспечения используют этот базовый шаблон для компиляции из исходного кода:
./configure && make && make install
Популярные программы, такие как Apache, используют эту последовательность (или ее вариант), например: объясняет свое досье УСТАНОВИТЬ:

Node.js также следует этой структуре, как указано в файле BUILDING.md:

В каждом проекте эта строка команды может немного отличаться. Используйте логический оператор «И» (&&
) останавливает процесс, если какой-либо шаг не выполняется:
./configure && make && make install
Или вы можете запустить каждую команду отдельно в одной строке с точкой с запятой, хотя в этом случае все команды будут выполнены без остановки в случае сбоя какой-либо из них:
./configure; make; make install
Вы также можете выполнить три строки по отдельности:
./configure make make install
Если вы просто хотите попробовать программу, не устанавливая ее, вы можете пропустить этот шаг. сделать установку
и запустите его из папки.
настроить
Готово, в то время как другие (например, grep) требуют предварительного запуска другого скрипта для его генерации. Всегда обращайтесь к файлам INSTALL, BUILD или README, чтобы следовать рекомендациям проекта. 📋Как ./configure запускает процесс
Сценарий настроить
Это отправная точка процесса компиляции, адаптирующая проект к вашей среде.
Этот скрипт проверяет необходимые для проекта зависимости, включая версии и доступность. После завершения он генерирует файл с именем Makefile
для следующего этапа.
Сценарий настроить
предлагает множество настраиваемых опций с ./configure --help
, что позволяет вам настраивать детали сборки.
настроить
как делать
Выводите на экран много информации. Используйте опцию --тихий
если вы хотите выполнить эти команды, не показывая так много подробностей. 🤫Если сценарий отсутствует настроить
, некоторые проекты включают в себя такой сценарий autogen.sh
для его генерации. Например, htop использует его:

Очень простые проекты или проекты, написанные на других языках, могут не иметь настроить
. Там процесс состоит из двух этапов: сделать && сделать установку
.
Сценарий настроить
Он также контролирует детали установки, такие как параметры --префикс
, который задаёт корневой каталог установки. По умолчанию это /usr/local
, но вы можете изменить его, чтобы лучше организовать свои файлы.
make делает большую часть работы
После настроить
генерирует Makefile
, фактическая компиляция программного обеспечения начинается с делать
.
Эта программа считывает Makefile
и следует правилам, чтобы решить, какие файлы создавать или обновлять. Makefiles
рукописные тексты легко понять тем, кто знает синтаксис.
Например, вот этот Makefile
просто компилирует программу, которая зависит от файла программа.c
:
программа: program.c gcc -o program program.c
делать
проверьте, если программа.c
Изменилось с момента последней компиляции. Если не изменилось, ничего не делать; если изменилось, скомпилировать с помощью gcc
.

Los make-файлы
Автоматически генерируемые файлы обычно гораздо сложнее. Например, makefile
htop содержит 2440 строк:

Но вам не обязательно понимать все детали. Если вы не изменяете исходный код, просто запустите его. делать
и позвольте системе позаботиться об этом.
Шаг делать
Для крупных проектов это может занять несколько минут или больше. Если процесс завершается неудачно, это обычно связано с отсутствием зависимостей. Преимущество в том, что делать
сохраняет прогресс и возобновляет выполнение с того места, где остановился, при следующем запуске.
Завершение с помощью make install
После компиляции созданный исполняемый файл обычно находится в корне проекта или в подкаталоге с именем мусорное ведро
. Вы можете запустить его, используя полный путь:

Это полезно для тестирования, но в долгосрочной перспективе вам захочется установить его в доступном месте.
Цель установить
который определяет makefile
Скопируйте необходимые файлы и установите разрешения. Расположение по умолчанию: /usr/local/bin
, хотя вы можете изменить это с помощью --префикс
.
Если у вас нет прав доступа к этой папке, запустите sudo make install
и предоставляет пароль администратора.
Каталог установки должен быть включен в вашу переменную ПУТЬ
чтобы иметь возможность запустить программу, указав только ее имя, без указания полного пути.