Autotools – Wiki

Autotools

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji , szukaj
Logo GNU

Autotools (GNU build system) - zestaw narządzi programistycznych , które pomagają w kompilowaniu kodu źródłowego i budowaniu przenośnych pakietów oprogramowania dla wielu systemów operacyjnych z rodziny UNIX .

Tworzenie przenośnego oprogramowania może sprawiać wiele trudności: kompilatory języka C różnią się na poszczególnych systemach, może brakować pewnych funkcji w bibliotekach programistycznych , pliki nagłówkowe mogą mieć różne nazwy. Jednym ze sposobów rozwiązania tego problemu jest pisanie kodu źródłowego z instrukcjami blokowymi wybieranymi przez dyrektywy preprocesora (#ifdef), jednak różnorodność narzędzi do kompilacji sprawia, że to podejście szybko staje się nieporęczne. Narzędzia autotools zostały zaprojektowane aby ułatwić rozwiązanie tej kwestii.

GNU build system jest częścią GNU toolchain i jest szeroko wykorzystywany w wielu wolnych i otwartych projektach. Narzędzia Autotools są wolnym oprogramowaniem na licencji GNU GPL ze szczególnymi wyjątkami [1] [2] , zezwalającymi na wykorzystanie GNU build system w oprogramowaniu własnościowym .

Spis treści

[ edytuj ] Narzędzia wchodzące w skład GNU build system

Schemat proceduralny autoconf i automake

Autotools składa się z Autoconf , Automake i Libtool . [3] Innymi narzędziami używanymi z GNU build system są GNU make , GNU gettext , pkg-config i GNU Compiler Collection (GCC).

[ edytuj ] GNU Autoconf

Autoconf generuje skrypt configure bazując na zawartości pliku configure.ac, który opisuje kod źródłowy. Uruchomiony skrypt configure skanuje środowisko kompilacji, a następnie generuje podrzędny skrypt config.status, który z kolei przetwarza pliki wejściowe, najczęściej Makefile.in, tworząc pliki wyjściowe (Makefile), które są właściwe dla danego środowiska kompilacji. Na koniec program make wykorzystując Makefile tworzy pliki wykonywalne z kodu źródłowego.

Złożoność narzędzi Autotools odzwierciedla mnogość warunków, w których kod źródłowy może być przetwarzany.

  • Jeśli zmieniony został plik z kodem źródłowym, wystarczy uruchomić make, który ponownie skompiluje część kodu źródłowego dotkniętego zmianą.
  • Jeśli zmieniony został plik .in, należy ponownie uruchomić config.status i make.
  • Jeśli kod źródłowy został skopiowany do innego komputera, należy ponownie uruchomić configure (który z kolei uruchamia config.status i make. (Z tego powodu kod źródłowy kompilowany za pomocą GNU build system jest rozpowszechniany bez plików generowanych przez configure.))
  • Jeśli zostały przeprowadzone większe zmiany w kodzie źródłowym, potrzebne będą zmiany w plikach .in i configure.ac, a następnie wykonane kolejne kroki.

Aby przetworzyć pliki, autoconf wykorzystuje makroprocesor GNU m4 .

Autoconf jest dostarczany z kilkoma pomocniczymi programami takimi jak:

  • Autoheader, który pomaga zarządzać plikami nagłówkowymi.
  • Autoscan, który wstępnie tworzy pliki wejściowe dla Autoconf.
  • ifnames, który listuje identyfikatory preprocesora używane w programie.

[ edytuj ] GNU Automake

Automake pomaga tworzyć przenośne pliki Makefile, które następnie są przetwarzane przez program make. Jako dane wejściowe wykorzystywany jest plik Makefile.am, z którego tworzony jest plik Makefile.in, służący do wygenerowania Makefile za pomocą skryptu configure.

[ edytuj ] GNU Libtool

Libtool pomaga zarządzać tworzeniem statycznych i dynamicznych bibliotek na różnych systemach z rodziny UNIX. W tym celu Libtool wykorzystuje abstrakcję procesu tworzenia bibliotek, ukrywając różnice występujące na poszczególnych systemach (np. różnice pomiędzy systemem GNU / Linux a Solaris ).

[ edytuj ] Gnulib

Gnulib upraszcza proces tworzenia przenośnego oprogramowania dla wielu systemów, wykorzystującego w tym celu Autoconf i Automake.

[ edytuj ] Zalety GNU build system

GNU build system pozwala programiście pisać wieloplatformowe oprogramowanie oraz ułatwia docelowemu użytkownikowi, który chce samodzielnie skompilować program, proces budowania programu. Użytkownik nie potrzebuje wówczas zainstalowanych na komputerze komponentów GNU build system, wystarczy że uruchomi dostarczony skrypt configure, wymagający obecności tylko powłoki systemowej kompatybilnej z powłoką Bourne'a .

[ edytuj ] Ograniczenia GNU build system

GNU build system używa powłoki systemowej kompatybilnej z powłoką Bourne'a, wspomagając użytkownika w procesie konfiguracji i budowania programu. GNU build system może być wykorzystywany zarówno do tworzenia programów natywnych na danym komputerze, jak i do kompilacji skrośnej , w celu tworzenia programów na inne architektury komputerowe . [4]

Oprogramowanie kompilowane skrośnie na systemie GNU/Linux lub innym z rodziny UNIX dla systemu Windows może być zrealizowane za pomocą MinGW , jednak często pożądane są natywne kompilacje dla niektórych systemów (takich jak Microsoft Windows ), które nie mogą standardowo uruchamiać skryptów powłok Bourne'a. Istnieje możliwość instalacji Cygwin albo MSYS w systemie Windows, tworząc warstwę kompatybilności z systemem uniksowym, co umożliwia uruchomienie skryptu configure. Cygwin dostarcza ponadto GNU Compiler Collection , GNU make oraz inne oprogramowanie świadcząc prawie kompletny system uniksowy w systemie Windows; MSYS również zawiera GNU make oraz pozostałe narzędzia zaprojektowane do pracy z MinGW (wersja GCC ).

Projekty używające GNU build system niekoniecznie muszą dostarczać skrypt configure w ich systemach kontroli wersji (takich jak CVS czy Subversion ). Jeśli projekt wykorzystujący GNU build system nie posiada wygenerowanego pliku ./configure dostępnego dla użytkownika, musi on sam go wygenerować. Jednym z możliwych sposobów jest uruchomienie narzędzia autoreconf w powłoce systemowej:

$ autoreconf

Powyższe polecenie wyzwoli aclocal, autoconf, autoheader i automake, jeśli będzie to potrzebne. W niektórych przypadkach może być konieczne wywołanie dodatkowych poleceń. Popularną konwencją jest wówczas dostarczenie skryptu, często nazwanego autogen.sh lub bootstrap, który uruchamia wszystkie potrzebne narzędzia.

Pewnym ograniczeniem jest wygenerowany przez Autoconf skrypt configure, który może okazać się powolny, ponieważ uruchamia programy takie jak kompilator języka C wiele razy w celu sprawdzenia obecności różnych bibliotek, plików nagłówkowych i funkcji językowych.

[ edytuj ] Zobacz też

Przypisy

[ edytuj ] Linki zewnętrzne


Merkel spieszy na ratunek niemieckiej rewolucji energetycznej
Realizacja nowej niemieckiej strategii energetycznej to "herkulesowe zadanie" - przyznała w środę kanclerz Angela Merkel po rozmowie z premierami 16 landów Niemiec na temat kłopotów z wdrażaniem planów rezygnacji z atomu i przejścia na energię odnawialną.



Syria: Sankcje kosztowały kraj około 4 mld dolarów
Syryjski minister ds. ropy naftowej Sufian Alaw przyznał w środę, że surowe międzynarodowe sankcje wobec sektora paliwowego Syrii kosztowały kraj około 4 mld dolarów. Chodzi o zastosowane we wrześniu 2011 roku embargo na syryjską ropę naftową.



Brazylia: Pilotka wyprosiła z samolotu pasażera za seksistowskie uwagi
Pilotka brazylijskich linii lotniczych TRIP wyprosiła z samolotu przed startem pasażera. Mężczyzna głośno wypowiadał seksistowskie uwagi, kiedy dowiedział się, że samolotem pokieruje kobieta.



Premier Tusk przyleciał na szczyt UE do Brukseli
Premier Donald Tusk przybył do Brukseli na nieformalny szczyt UE, na którym przywódcy mają rozmawiać o wsparciu wzrostu i zatrudnienia. Wcześniej premier spotka się z prezydentem Francji Francois Hollande'em oraz przewodniczącym PE Martinem Schulzem.



Trzęsienie ziemi we Włoszech. Ludzie proszą o dach nad głową
Około 6 tys. mieszkańców regionu Emilia-Romania, na północy Włoch, zwróciło się po niedzielnym trzęsieniu ziemi z prośbą o zapewnienie miejsc w miasteczkach namiotowych i ośrodkach noclegowych - poinformowały miejscowe władze.



Home Page , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,