Co robi typowy./ configure do in Linux?

Dlaczego jest to konieczne, chociaż wszystko jest określone w pliku makefile ?

Author: codaddict, 2010-03-27

3 answers

Typowo skrypt configure po uruchomieniu będzie:

  • Sprawdź szczegóły dotyczące maszyny na którym oprogramowanie będzie zainstalowany. Ten skrypt sprawdza pod kątem wiele zależności od systemu. Do pracy danego oprogramowania właściwie, może to wymagać wiele rzeczy, które będą istniały na Twoim już maszyna. Jeśli w Twoim systemie brakuje jednego z głównych wymagań, skrypt configure exit i nie możesz kontynuować instalacji, dopóki nie otrzymasz te wymagane rzeczy.

  • Utwórz Makefile do użycia w następnym kroku.

 66
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-27 14:16:30

Uruchamia skrypt, który zazwyczaj tworzy pliki Makefile i " configure.h".

Skrypt jest napisany w lanugage "M4", który jest językiem makr. Makra najwyższego poziomu znajdują się w autoconf.ac lub (w starszych systemach) autoconf.in. te rozszerzają się zawierające makra niższego poziomu, które z kolei rozszerzają się w rzeczywiste testy, które tworzą małe programy lub zadania, aby sprawdzić, jaki masz system.

Na przykład AC_CHECK_HEADER ([myheader.h], ...) może wygenerować mały program w C like:

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

Jeśli program kompiluje, sprawdzanie jest uważane za "przechodzące", w przeciwnym razie "nie powiedzie się". Status takich kontroli często znajduje odzwierciedlenie w konfiguracji.plik H. Podczas sprawdzania, możesz znaleźć linię w config.h to wygląda jak:

#define HAVE_MYHEADER_H 1

Podczas testu, który się nie powiedzie, może wyglądać jak

#define HAVE_MYHEADER_H 0

Po skonfigurowaniu do pracy z autoconf w makrze AM_INIT_AUTOMAKE, plik Makefile może również odwoływać się do wyników testów, jeśli zmienna zawierająca wynik testu jest eksportowane. Tak więc, jeśli potrzebna Biblioteka znajduje się w kilku różnych typowych lokalizacjach, lub składnia "co działa" z jednym ze standardowych narzędzi (takich jak tar, ar, itp.) jest inna, lub preferowane narzędzie nie jest dostępne, plik Makefile będzie w stanie poprawnie zbudować projekt używając różnych lokalizacji biblioteki, innej składni narzędzia lub innego zestawu narzędzi.

Więc gdy mamy do czynienia z projektem Autotools (configure / make / make install) plik Makefile naprawdę nie zawiera wszystko, co niezbędne do budowy projektu, generowane jest z Makefile.in szablon specjalnie dopasowany do Twojego systemu po wpisaniu "configure".

 33
Author: Edwin Buck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 15:06:05

Skrypt configure buduje Makefile z szablonu, zastępując w rzeczy takie jak gdzie chcesz zainstalować kod i jakie definicje są potrzebne do (C, C++, Fortran, ...) kompilator, który służy do budowy programu. Teoretycznie można to wszystko zrobić w jednym kroku, z wyjątkiem tego, że jest tyle różnych konfiguracji możliwych, że łatwiej jest to zrobić etapami. (Na przykład, jeśli budujesz duży program z dostępną maszyną wielordzeniową, możesz określić, że pewien zdarza się wiele kompilacji równoległych, co nie jest problemem, jak rzeczy są skonfigurowane.)

 6
Author: Donal Fellows,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-27 14:20:39