Что типичный./настраиваем делает в Linux?

Почему это необходимо, хотя все указано в make-файле?

63
задан codaddict 10 June 2011 в 05:56
поделиться

3 ответа

Обычно сценарий configure при запуске:

  • Проверяет некоторые данные о машине. на которой будет установлено. Этот сценарий проверяет наличие множество зависимостей в вашей системе. Чтобы конкретное программное обеспечение работало правильно работать, может потребоваться много многое из того, что уже существует на вашей машине. Если в вашей системе отсутствует какое-либо из основных требований, сценарий configure завершится, и вы не сможете продолжить установку, пока не получите все необходимое.

  • Создайте Makefile, который будет использоваться в следующем шаге.

62
ответ дан 24 November 2019 в 16:24
поделиться

Он запускает сценарий, который обычно создает файлы сборки и configure.h.

Скрипт написан на языке "m4", который является макроязыком. Макросы верхнего уровня находятся в autoconf.ac или (в старых системах) autoconf.in. Они расширяются и содержат макросы нижнего уровня, которые, в свою очередь, расширяются до реальных тестов, которые создают небольшие программы или задачи для проверки того, какая у вас система.

Например, AC_CHECK_HEADER ([myheader.h], ...) может сгенерировать крошечную программу на C, например:

#include "myheader.h"
int main(int argc, char** argv) {
  return 0;
}

Если программа компилируется, проверка считается «пройденной», в противном случае она «терпит неудачу». Статус таких проверок часто отражается в файле config.h. При прохождении проверки вы можете найти строку в config.h, которая выглядит так:

#define HAVE_MYHEADER_H 1

при неудачном тестировании она может выглядеть как

#define HAVE_MYHEADER_H 0

Если настроена работа с autoconf в макросе AM_INIT_AUTOMAKE, Makefile может также ссылаться на результаты тестов, если переменная, содержащая результат теста, экспортируется. Поэтому, если необходимая библиотека находится в нескольких разных типичных местах, или синтаксис «что работает» с одним из ваших стандартных инструментов (например, tar, ar и т. Д.) Отличается, или предпочтительный инструмент недоступен, Makefile будет в состоянии по-прежнему правильно построить проект, используя разные расположения библиотек, другой синтаксис инструментов или другой набор инструментов.

Таким образом, при работе с проектом Autotools (configure / make / make install) Makefile действительно не содержит всего необходимого для сборки проекта, он генерируется из шаблона Makefile.in, чтобы точно соответствовать вашей системе, когда вы вводите "configure" ".

32
ответ дан 24 November 2019 в 16:24
поделиться

Сценарий configure создает Makefile из шаблона, подставляя такие вещи, как место установки кода и определения, необходимые для компилятора (C, C++, Fortran, ...), который используется для сборки программы. Теоретически все это можно было бы сделать за один шаг, но существует так много различных конфигураций, что проще делать это поэтапно. (Например, при создании большой программы на многоядерной машине, вы можете захотеть указать, чтобы происходило определенное количество параллельных компиляций, что не зависит от того, как все сконфигурировано)

.
5
ответ дан 24 November 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: