Linux configure command line

Чарующая магия configure, make и make install

Это небольшая заметка для начинающих линуксоидов, о том что же означают эти три замечательные команды и для чего одни нужны. Начнём, как говорится, с начала. Большинство программ перед использованием надо скомпилировать, то есть преобразовать из текста понятного человеку в набор единиц и нулей, понятных компьютеру. Процесс условно разделён на три этапа: конфигурирование (configure), сборка (make) и установка (make install). Подробности под катом 🙂

./configure

Данная команда выполняет поиск необходимых для компиляции библиотек и заголовочных файлов (это для программ частично или полностью написанных на C/C++ и подобных языков), а так же настройку особых параметров или подключение специальных библиотек, в случае если ./configure обнаружит всё что ему нужно, он создаст Makefiles — файл, необходимый для сборки программы

Выполнить настройку параметров конфигуратора можно при помощи ключей и аргументов этих самых ключей, например:

./configure —prefix=/opt/my_program

При помощи ключа —prefix= Вы можете указать директорию, которая в дальнейшем будет выступать как префикс для вашей программы (то есть корневая директория). Это связанно с тем что в мире Linux и не только, существует специальная Иерархия Файловой Системы (HFS) в соответствии с которой любая программа, чтобы работать без ошибок, должна быть собрана и установлена.

В файловой системе есть три основных префикса, относительно которых большинство программ конфигурируется, а именно:

  • / — корневая директория операционной системы, так называемый ROOT
  • /usr — директория, в которой находятся приложения пользовательского окружения
  • /usr/local — дополнительная директория для пользовательских программ, собираемых вручную, специально для того чтобы операционная система не превратилась в свалку

Если открыть любую из этих директорий, то можно увидеть очень схожую структуру, как минимум там будут папки: bin, etc, include, libs, sbin.

Если запустить ./configure без ключей, то префиксом по умолчанию (директория, в которую будет установлена собираемая программа) будет /usr/local, помните это если не можете запустить свою программу, возможно у Вас не прописан путь в PATH.

Кроме ключа —prefix в конфигураторе, как правило, имеется ещё множество других ключей, посмотреть их все можно если выполнить:

./configure —help

make

Самая важная и простая команда/программа, выполняет запуск процедуры компиляции приложения из исходного кода. Для своей работы данная программа использует специальные файлы Makefiles, в которых подробно описан процесс сборки приложения со всеми параметрами, которые мы указали конфигуратору. Результатом успешного выполнения команды make будет собранная программа в текущей директории.

make install

Данная команда выполняет непосредственную установку приложения в указанную, на этапе конфигурирования, директорию, после выполнения команды make install вы можете запустить свежеустановленную программу.

Читайте также:  Linux сетевую папку window

Послесловие

Чтобы не писать три команды по очереди можно написать их в одну строку:

./configure && make && make install

&& — это оператор И пришедший из языка C/C++, однако, с точки зрения оболочки он означает то, что следующую команду нужно выполнить только в случае успешного выполнения предыдущей команды, это очень удобно если один из этапов завершается с ошибкой.

На самом деле make install так же может выполнить сборку, потому как задача install зависит от задачи all (то есть непосредственно сборки приложения), это означает что этап make можно пропустить и выполнить всего две команды, если записать их в одну строку получится:

./configure && make install

Удачи Вам! И спасибо за то что дочитали!

Источник

Configure Make Install

Изображение баннера

Сначала Вам скорее всего нужно скачать архив с программой, которую Вы хотите установить.

Например, команда для скачивания python3.7:

И перейти в только что распакованную директорию

В этой директории скорее всего будет находиться скрипт configure

Configure

configure — это не команда linux а скрипт, который обычно лежит в папке к configure

Означает, что означает что префикс установки /usr ,

Бинари уходят в usr/bin
libraries в usr/lib
Проверяется наличие всего необходимого
Создается файл MakeFile

—prefix=PREFIX — папка для установки программы, вместо /, например, может быть /usr/local/, тогда все файлы будут распространены не по основной файловой системе, а в /usr/local;

—bindir=DIR — папка для размещения исполняемых файлов, должна находится в PREFIX;

—libdir=DIR — папка для размещения и поиска библиотек по умолчанию, тоже в PREFIX;

—includedir=DIR — папка для размещения man страниц;

—disable-возможность — отключить указанную возможность;

—enable-возможность — включить возможность;

—with-библиотека — подобно enable активирует указанную библиотеку или заголовочный файл;

—without-библиотека — подобное disable отключает использование библиотеки.

Make

.cpp файлы компилируются в .o файлы

один .h файл может использоваться несколькими .cpp файлами

makefile нужны для того чтобы печатать меньше названий файлов и опций вручную.

С их помощью можно делать build только тех файлов, которые изменились.

Make это инструмент, который вызывает компиллятор. Можно указать тот компиллятор который нужен именно Вам.

С помощью инструкций в makefile можно указать какие именно файлы нужно заново компилировать.

В директории находятся три .cpp файла, два .h файла и три .o файла, оставшиеся от прошлой компиляции.

  • Example.cpp , Example.o
  • Second.cpp , Second.h , Second.o
  • Third.cpp , Third.h , Third.o

Все они нужны для проекта и не могут быть объединены в один файл.

Известно, что Example.cpp включает в себя файл Second.h и других зависимостей не имеет.

Мы хотим, чтобы при изменении самого Example.cpp либо его зависимости Second.h начиналась новая компиляция Example.cpp а затем новый Example.o линковался со старыми Second.o и Third.o

Читайте также:  Docker минимальный образ linux

Для этого напишем Makefile aomake

all: simple simple: Example.o Second.o Third.o g++ Example.o Second.o Third.o — Simple Example.o: Example.cpp Second.h g++ -c Example.cpp

Отступы нужно ставить табуляцией

Смотрим на последние две строки:

Если Second.h или Example.cpp (в который включен Second.h) изменились нужно компилировать файл Example.cpp после чего получается object файл Example.o и, как видно из первых двух строк — после обновления Example.o все object файлы линкуются.

Выигрыш в этой ситуации заключается в том, что нам не нужно было перекомпилировать Second.cpp и Third.cpp мы просто перелинковали уже существующие Second.o Third.o с новым Example.o

Чтобы запустить этот файл нужно к команде make добавить опцию f и название файла

У файла Second.cpp две зависимости: Second.h и Third.h

У файла Third.cpp только одна зависимость: Third.h

Учтём эти зависимости в нашем aomake

all: simple simple: Example.o Second.o Third.o g++ Example.o Second.o Third.o — Simple Second.o: Second.cpp Second.h Third.h g++ -c Second.cpp Third.o: Third.cpp Third.h g++ -c Third.cpp Example.o: Example.cpp Second.h g++ -c Example.cpp

Ещё одной полезной опцией является j

-j — jobs Определяет число работ — jobs (commands) которые запускаются одновременно.

Если указано больше чем одна -j опция, то применяться будет последняя.

Если -j опция дана без аргументов make не будет ограничивать количество работ запускаемых одновременно. То есть запуститься сможет неограниченное количество работ одновременно.

Более подробную информацию по Makefile вы можете найти в статье «makefile tutorial»

Install

Make — это не единственный способ устанавливать программы под linux. Более того, за сорок с лишним лет существования утилиты make вышло много её версий.

Прежде чем ставить что-то по-старинке с make install — советую изучить checkinstall

Источник

⌨️ Введение в команду “./configure”: Компиляция исходного кода на Linux

Команда ./configure – это распространенный способ конфигурирования и подготовки исходного кода программного обеспечения к компиляции в системах Linux.

Эта команда обычно выполняется перед командой make, которая собственно и компилирует программное обеспечение.

Понимание опций, доступных в команде ./configure, может дать вам больше контроля над процессом компиляции и помочь вам настроить сборку под ваши конкретные нужды.

Когда вы запускаете скрипт ./configure, он выполняет несколько задач по подготовке исходного кода к компиляции.

Некоторые из основных задач, которые он выполняет, включают в себя:

  • Проверка наличия зависимостей: Скрипт проверяет, установлены ли в системе необходимые зависимости, такие как библиотеки и инструменты. Если какие-либо зависимости отсутствуют, сценарий обычно сообщает об этом и останавливает процесс конфигурирования.
  • Настройка параметров конфигурации: Скрипт позволяет задать различные параметры конфигурации, такие как расположение библиотек, тип установки и функции, которые должны быть включены в скомпилированное программное обеспечение.
  • Создание make-файлов: После установки зависимостей и параметров конфигурации скрипт создает make-файлы, которые используются командой make для компиляции программного обеспечения. Make-файлы содержат информацию о том, как скомпилировать программу, например, расположение исходных файлов, опции, которые нужно передать компилятору, и зависимости.
  • Выполнение некоторых базовых тестов: Скрипт также выполняет некоторые базовые тесты системы, чтобы убедиться, что система совместима с устанавливаемым программным обеспечением. Сюда входят тесты архитектуры системы, операционной системы и других специфических для системы деталей.
Читайте также:  Linux для hp compaq

Запуск скрипта ./configure

В Linux системные пакеты могут быть установлены с помощью менеджера пакетов, а также могут быть скомпилированы из исходного кода.

Большинство исходных текстов содержат скрипт ./configure, который подготавливает исходный текст и систему перед началом компиляции.

После успешного завершения ./configure вы увидите Make-файлы, созданные в вашей системе, которые будут использоваться `make` для компиляции исходного кода и установки на вашу машину.

Вы можете увидеть файл, созданный скриптом ./configure, с помощью команды ls.

Общие параметры для ./configure

Самое основное использование команды ./configure – просто запустить ее без каких-либо опций.

Это позволит проверить наличие зависимостей и настроить сборку на использование параметров по умолчанию.

Опция –prefix позволяет указать каталог, в который будет установлено программное обеспечение.

По умолчанию программа обычно устанавливается в /usr/local/, но при желании вы можете указать другой каталог.

Например, чтобы установить программное обеспечение в /usr/local/mysoftware/, выполните следующую команду:

./configure --prefix=/usr/local/mysoftware/ 

Опции –with-package и –without-package позволяют указать внешние зависимости, от которых зависит программное обеспечение.

Эти опции можно использовать для указания местоположения определенных библиотек, например –with-ssl=/usr/local/ssl.

Опцию –enable-debug можно использовать для включения отладочной информации во время компиляции.

Это может быть полезно для устранения неполадок и отладки программ.

Опцию –help можно использовать для просмотра списка всех доступных опций для команды ./configure.

Кроме того, вы можете использовать переменные окружения CFLAGS и LDFLAGS для передачи флагов компилятору и компоновщику.

Например, чтобы включить дополнительные флаги оптимизации при компиляции, вы можете выполнить следующую команду:

CFLAGS="-O3" LDFLAGS="-O3" ./configure 

Заключение

В заключение следует отметить, что команда ./configure является важным шагом в процессе компиляции программного обеспечения в системах Linux.

Понимание опций, доступных с помощью этой команды, может дать вам больше контроля над процессом компиляции и помочь вам настроить сборку под ваши конкретные нужды.

Важно всегда проверять наличие опций в документации к программному обеспечению, прежде чем использовать их.

Также важно отметить, что представленные выше опции являются лишь примерами, и каждый пакет программного обеспечения может иметь различные опции.

Всегда рекомендуется проверять документацию к программному обеспечению для получения наиболее точной и актуальной информации о доступных опциях для команды ./configure.

Источник

Оцените статью
Adblock
detector