Skip to content

Porozumění příkazu Unix a Linux: make

26 de Červen de 2021
GettyImages 468834165 57ed8d935f9b586c353b9d75

Obslužný program make automaticky určuje, které části velkého programu je třeba překompilovat, a vydá příkazy k jejich opětovné kompilaci. Manuál popisuje GNU implementaci značky, kterou napsali Richard Stallman a Roland McGrath. Obslužný program make není omezen na programy. Můžete jej použít k popisu jakékoli úlohy, kde některé soubory musí být automaticky aktualizovány od ostatních, kdykoli se ostatní změní. Příkaz make se nejčastěji používá v běžném procesu k vytváření softwaru z jeho zdrojového kódu.

Jak používat příkaz Make v Linuxu

Toto je běžný příklad použití příkazu make v systému Linux. Obvykle je součástí jednoduchého tříkrokového procesu vytváření open-source aplikací z jejich zdrojového kódu. Tyto příklady ukazují programy C, protože jsou nejběžnější, ale můžete použít make s jakýmkoli programovacím jazykem, který může spustit jeho kompilátor s příkazem prostředí.

  1. Nainstalujte Git, pokud jej nemáte, spolu s nástroji pro vytváření softwaru. apt install git build-essential

  2. Vyberte aplikaci, se kterou chcete pracovat, nebo si stáhněte VLC. apt build-dep vlc

  3. Naklonujte zdrojový kód VLC. git klon https://github.com/videolan/vlc.git

  4. Změňte adresáře na klonovaný zdrojový kód VLC a spusťte konfigurační skript. cd vlc
    ./ bootstrap
    ./konfigurovat

  5. Spusťte udělat příkaz spolu s -j příznak, následovaný počtem jader / vláken CPU, které váš systém má. udělat -j4

  6. To bude nějakou dobu trvat. Po dokončení nainstalujte aplikaci pomocí provést instalaci. sudo provést instalaci

  7. Skončil jsi.

Více často než ne, tak uvidíte použitý příkaz make. Mohou existovat složitější postupy než toto nebo nepatrné variace, ale nikdy to není příliš složité.

Jak funguje příkaz GNU Make?

Následující část je technickým rozpisem příkazu make. Pokud chcete značku maximálně využít, podívejte se na níže uvedené možnosti. Tato stránka je výňatkem z dokumentace GNU make. Aktualizuje se jen příležitostně, protože projekt GNU nepoužívá nroff. Úplnou aktuální dokumentaci najdete v informačním souboru make.info který je vytvořen ze zdrojového souboru Texinfo make.texinfo.

Syntaxe a příprava obslužného programu make

Syntaxe nástroje make je udělat -f makefile ] [ option ] … cílová … Chcete-li se připravit na použití značky, musíte napsat soubor s názvem makefile který popisuje vztahy mezi soubory ve vašem programu a uvádí příkazy pro aktualizaci každého souboru. Spustitelný soubor se obvykle aktualizuje ze souborů objektů, které se zase vytvářejí kompilací zdrojových souborů. Jakmile existuje vhodný makefile, pokaždé, když změníte některé zdrojové soubory, příkaz shell udělat stačí provést všechny potřebné rekompilace. Program make používá databázi makefile a časy poslední úpravy souborů k rozhodnutí, které soubory je třeba aktualizovat. Pro každý z těchto souborů vydává příkazy zaznamenané v databázi. Obslužný program make provádí příkazy v makefile a aktualizuje jeden nebo více cílových jmen, kde název je obvykle program. Jestli ne -F možnost je k dispozici, vyhledá makefiles GNUmakefile, makefile, a Makefilev tomto pořadí. Normálně byste měli zavolat také makefile makefile nebo Makefile. (Doporučuje se použít Makefile protože se objevuje prominentně blízko začátku seznamu adresářů, poblíž dalších důležitých souborů, například README.) GNUmakefile, kontrolovaný podle prvního jména, se pro většinu souborů makefile nedoporučuje. Tento název použijte pouze v případě, že makefile je specifický pro GNU make a nebude mu rozumět jiná verze make. Pokud je makefile , načte se standardní vstup. The udělat obslužný program aktualizuje cíl, pokud to závisí na nezbytných souborech, které byly změněny od poslední úpravy cíle, nebo pokud cíl neexistuje.

Možnosti nástroje Make Utility

The -b a -m možnosti jsou ignorovány kvůli kompatibilitě s jinými verzemi značky.

-C dir změny adresáře dir před přečtením makefiles nebo cokoli jiného. Pokud více -C možnosti jsou specifikovány, každá je interpretována vzhledem k předchozí: -C / -C atd je ekvivalentní k -C / atd. To se obvykle používá u rekurzivních vyvolání značky. The -d volba kromě běžného zpracování vytiskne informace o ladění. Informace o ladění uvádějí, které soubory jsou považovány za předělání, které časy souborů jsou porovnávány a s jakými výsledky, které soubory je třeba přepracovat a která implicitní pravidla jsou považována a která jsou použita. The -E volba dává proměnným převzatým z prostředí přednost před proměnnými z makefile. The -F soubor možnost použití soubor jako makefile. The -i volba ignoruje všechny chyby v příkazech provedených k předělání souborů. The -Já dir volba určuje adresář dir k vyhledání zahrnutých makefile. Pokud několik – Možnosti se používají k zadání několika adresářů, adresáře se prohledávají v uvedeném pořadí. Na rozdíl od argumentů k jiným příznakům značky, adresáře s -Já vlajky mohou přijít hned za vlajkou: -Idir je povoleno, stejně jako – Říkám. Tato syntaxe je povolena pro kompatibilitu s preprocesorem C. -Já vlajka. The -j práce volba určuje počet úloh (příkazů), které mají být spuštěny současně. Pokud je jich více -j poslední možnost je účinná. Pokud -j možnost je dána bez argumentu, značka neomezuje počet úloh, které běží současně. The -k možnost po chybě pokračuje co nejvíce. Cíl, který selhal, a ty, které na něm závisí, nelze předělat. Ostatní závislosti těchto cílů však lze zpracovat stejně. The -l a -l zatížení možnosti určují, že by neměly být spuštěny žádné nové úlohy (příkazy), pokud jsou spuštěny další úlohy, a průměr zatížení je alespoň zatížení (číslo s plovoucí desetinnou čárkou). Bez argumentu odstraní předchozí limit zatížení. The -n volba vytiskne příkazy, které by byly provedeny, ale neprovede je. The soubor volba nepřerobí soubor i když je starší než jeho závislosti a nic nezmění kvůli změnám v soubor. V zásadě je soubor považován za starý a jeho pravidla jsou ignorována. The -p volba vytiskne databázi (pravidla a hodnoty proměnných), která je výsledkem čtení makefile. Poté se spustí jako obvykle nebo jak je uvedeno jinak. Tím se vytisknou také informace o verzi dané souborem -proti vypínač (viz níže). Chcete-li databázi vytisknout, aniž byste se snažili předělat jakékoli soubory, použijte udělat -p -f / dev / null.

The -q volba nastaví režim otázek. Neprovádí žádné příkazy ani nic nevytiskne. Vrátí stav ukončení, který je nula, pokud jsou zadané cíle aktuální, jinak nenulové. The -r Tato možnost vylučuje použití integrovaných implicitních pravidel. Vymaže také výchozí seznam přípon pro pravidla přípon. The -s volba umlčí operaci. Nevytiskne příkazy tak, jak jsou prováděny. The -S volba zruší účinek -k volba. To není nutné, s výjimkou rekurzivní značky kde -k může být zděděno z nejvyšší úrovně značky přes MAKEFLAGS nebo pokud nastavíte -k v MAKEFLAGS ve vašem prostředí. The -t volba se dotýká souborů (označuje je aktuální, aniž by je měnila), místo aby spouštěla ​​jejich příkazy. To se používá k předstírání, že příkazy byly provedeny, k oklamání budoucích vyvolání značky. The -proti Možnost vytiskne verzi programu make plus autorská práva, seznam autorů a upozornění, že neexistuje žádná záruka. The -w Možnost vytiskne zprávu obsahující pracovní adresář před a po dalším zpracování. To může být užitečné pro hledání chyb z komplikovaných hnízd rekurzivní značky příkazy. The -W soubor možnost předstírá, že cíl soubor byl upraven. Při použití s -n příznak, toto vám ukazuje, co by se stalo, kdybyste tento soubor upravili. Bez -n, je to téměř stejné jako spuštění a dotek příkaz na daném souboru před spuštěním make, s tím rozdílem, že čas modifikace se mění pouze ve fantazii make.