GNU Autotools - GNU Autotools
![]() | tento článek potřebuje další citace pro ověření.Září 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |

The GNU Autotools, také známý jako GNU Build System, je sada programovací nástroje navržen tak, aby pomáhal při výrobě zdrojový kód balíčky přenosný mnoho Unixový systémy.
Přenosný softwarový program může být obtížné: Překladač C. se liší od systému k systému; některé funkce knihovny v některých systémech chybí; hlavičkové soubory mohou mít různá jména. Jedním ze způsobů, jak to vyřešit, je psát podmíněný kód, přičemž bloky kódu jsou vybrány pomocí směrnic preprocesoru (#ifdef
); ale kvůli široké škále prostředí sestavení se tento přístup rychle stává neovladatelným. Autotools je navržen tak, aby tento problém řešil lépe.
Autotools je součástí GNU toolchain a je široce používán v mnoha svobodný software a otevřený zdroj balíčky. Jeho komponenty jsou svobodný software, s licencí pod GNU General Public License se zvláštními licenčními výjimkami[1][2] povolující jeho použití s proprietární software.
GNU Build System umožňuje stavět mnoho programů pomocí dvoustupňového procesu: konfigurovat následován udělat.[3]
Součásti

Automatické nástroje se skládají z GNU obslužné programy Autokonference, Automake, a Libtool.[4] Mezi další často používané nástroje patří GNU udělat program, GNU gettext, pkg-config a Sbírka překladačů GNU, nazývané také GCC.
GNU Autoconf
Autokonference generuje a konfigurovat
skript založený na obsahu a configure.ac
soubor, který charakterizuje konkrétní část zdrojového kódu. The konfigurovat
skript při spuštění prohledá prostředí sestavení a vygeneruje podřízeného config.status
skript, který zase převádí další vstupní soubory a nejčastěji Makefile.in
do výstupních souborů (Makefile
), které jsou vhodné pro dané prostředí sestavení. Nakonec udělat
program používá Makefile
generovat spustitelné programy ze zdrojového kódu.
Složitost Autotools odráží rozmanitost okolností, za kterých může být sestaven zdrojový kód.
- Pokud se změní soubor zdrojového kódu, stačí jej znovu spustit
udělat
který pouze re-kompiluje tu část těla zdrojového kódu ovlivněnou změnou. - Pokud
.v
soubor se změnil, stačí jej znovu spustitconfig.status
audělat
. - Pokud je tělo zdrojového kódu zkopírováno do jiného počítače, stačí jej znovu spustit
konfigurovat
(který běžíconfig.status
) audělat
. (Z tohoto důvodu je zdrojový kód využívající Autotools obvykle distribuován bez souborů, kterékonfigurovat
generuje.) - Pokud se tělo zdrojového kódu změní zásadněji, pak
configure.ac
a.v
soubory je třeba změnit a následovat také všechny následující kroky.
Pro zpracování souborů používá autoconf implementaci GNU GNU m4 makro systém.
Autoconf je dodáván s několika pomocnými programy, jako je Autoheader, který slouží ke správě C hlavičkové soubory; Autoscan, který může vytvořit počáteční vstupní soubor pro Autoconf; a ifnames
, který může vypsat identifikátory C před procesorem použité v programu.
GNU Automake
Automake pomáhá vytvářet přenosné Makefile
s, které jsou zase zpracovány s udělat nástroj. Bere svůj vstup jako Makefile.am
a promění to v Makefile.in
, který používá skript konfigurace ke generování souboru Makefile
výstup. Provádí také automatické sledování závislostí; pokaždé, když je kompilován zdrojový soubor, je zaznamenán seznam závislostí (např. soubory záhlaví C). Později, kdykoli se spustí značka a zdá se, že se změnila závislost, budou závislé soubory znovu sestaveny.
GNU Libtool
Libtool pomáhá řídit tvorbu statický a dynamický knihovny na různých Unixový operační systémy. Libtool toho dosahuje abstrahováním procesu vytváření knihovny, skrýváním rozdílů mezi různými systémy (např. GNU /Linux systémy vs. Solaris ).
Gnulib
Gnulib zjednodušuje proces výroby softwaru, který používá Autoconf a Automake přenosný do široké škály systémů.
Používání
Autotools pomáhá vývojáři softwaru psát napříč platformami software a zpřístupnit jej mnohem širší komunitě uživatelů, a to i ve formě zdrojového kódu těm uživatelům, kteří si chtějí software sami vytvořit. Ve většině případů uživatelé jednoduše spustí dodané konfigurovat
skript (který nemá žádné jiné závislosti než přítomnost a Kompatibilní s Bourne skořápka ) a poté a udělat
program.[5] Nemusí mít v počítači nainstalované samotné nástroje Autotools.
Může být použit jak pro vytváření nativních programů na stroji pro sestavení, tak pro křížová kompilace do jiných architektur.[6]
Křížový kompilační software pro spuštění na hostiteli Windows z GNU / Linux nebo jiného unixového build systému je také možný, pomocí MinGW, nicméně nativní kompilace je často žádoucí v operačních systémech (jako je Microsoft Windows rodiny systémů), které samy nemohou spouštět skripty prostředí Bourne. Díky tomu je vytváření takového softwaru v operačním systému Windows o něco těžší než v systému Unixový systém, který poskytuje prostředí Bourne jako standardní součást. Lze nainstalovat Cygwin nebo MSYS systém v systému Windows a Unixový vrstva kompatibility, ačkoli, dovolující konfigurovat skripty ke spuštění. Cygwin také poskytuje Sbírka překladačů GNU, GNU make a další software, který poskytuje téměř úplný systém podobný systému Unix v systému Windows; MSYS také poskytuje GNU make a další nástroje určené pro práci s MinGW verze GCC.
I když se očekává, že vývojář poskytne konfigurovat skript pro koncového uživatele, občas může uživatel chtít znovu vygenerovat samotný konfigurační skript. Taková práce může být nutná, pokud si uživatel přeje změnit samotný zdrojový kód. Tito uživatelé by museli mít nainstalované Autotools a používat takové komponenty, jako je jeho autoreconf.
Automaticky generované konfigurovat
může být pomalý, protože mnohokrát spouští programy, jako je kompilátor C, aby otestoval, zda jsou k dispozici různé knihovny, hlavičkové soubory a jazykové funkce. To zvláště ovlivňuje Cygwin, který kvůli nedostatku rodáka systémové volání vidlice, může provádět konfigurační skripty podstatně pomaleji než Linux.[7]
Kritika
Ve svém sloupku pro Fronta ACM, FreeBSD vývojář Poul-Henning Kamp kritizoval GNU Build System:[8]
Myšlenka spočívá v tom, že konfigurační skript provádí přibližně 200 automatizovaných testů, takže uživatel není zatížen ruční konfigurací libtoolu. To je strašně špatný nápad, který byl již v 80. letech kritizován, když se objevil, protože umožňuje zdrojovému kódu předstírat, že je přenosný za dýhou konfiguračního skriptu, než aby měl ve skutečnosti kvalitu přenositelnosti. Je to parodie, že myšlenka konfigurace přežila.
Kamp načrtává historii systému sestavení v problémech s přenositelností, které jsou vlastní velké množství unixových variant a lituje, že je třeba, aby takové systémy budování existovaly:
31 085 řádků konfigurace pro libtool stále kontroluje, zda <sys/stat.h> a <stdlib.h> Unixen, který jim chyběl, neměl ani dostatek paměti pro spuštění libtoolu, ani dostatečně velké disky pro svůj 16 MB zdrojový kód.
Viz také
- Seznam softwaru pro automatizaci sestavení § Vytváření nástrojů pro generování skriptů
- Vytvářejte automatizaci
- CMake
- Standardy Gnits
- Standardy kódování GNU
- Waf
- SCons
- Systém sestavení Meson
- Qmake
Reference
- ^ „Savannah Git Hosting - autoconf.git / blob - COPYING.EXCEPTION“. Git.savannah.gnu.org. Archivovány od originál dne 21. 7. 2011. Citováno 2016-04-01.
- ^ "libtool.git - GNU Libtool". Git.savannah.gnu.org. 2005-01-08. Citováno 2016-04-01.
- ^ „Systém konfigurace a sestavení GNU - úvod“. Airs.com. 1998-07-01. Citováno 2016-04-01.
- ^ „Učení vývojových nástrojů GNU“. Autotoolset.sourceforge.net. Citováno 2016-04-01.
- ^ "automake: GNU Build System". Gnu.org. 2014-12-31. Citováno 2016-04-01.
- ^ „Cross Compilation with GNU Autotools“. Archivovány od originál 13. října 2008. Citováno 24. září 2008.
- ^ „Robert Ögren - pomalé provádění skriptu shellu na Cygwinu“. Cygwin.com. Citováno 2016-04-01.
- ^ Kamp, Poul-Henning (2012). „Generation Lost in the Bazaar“. Fronta ACM. 10 (8).
externí odkazy
- Systém konfigurace a sestavení GNU
- The pkg-config balík
- Dokumentace GNU automake
- Dokumentace GNU autoconf
- Kombinovaná příručka pro Automake a Autoconf
- Výukový program pro automatické nástroje
- GNU Autoconf, Automake a Libtool
- Autotools: průvodce odborníka na Autoconf, Automake a Libtool
- Průvodce integrací CUDA s automatickými nástroji
- Autotools Mythbuster
- Úvod do automatických nástrojů