GNU/Linux >> Znalost Linux >  >> Linux

Linux make Command s příklady

Úvod

Linux make command je běžně používaný nástroj systémovými administrátory a vývojáři. Příkaz pomáhá při procesu kompilace a je nezbytným nástrojem pro vytváření velkých aplikací. Tento nástroj omezuje opakování a urychluje kompilaci, což šetří čas.

Tento článek vám ukáže, jak používat Linux make příkaz s příklady.

Předpoklady

  • Přístup k terminálu.
  • make funkce nainstalována.
  • Textový editor.

Poznámka: Pokud make není v systému k dispozici, použijte sudo apt install make .

Jak funguje příkaz make?

make příkaz zkompiluje různé části programu a vytvoří konečný spustitelný soubor. Účel make je automatizovat kompilaci souborů, čímž je proces jednodušší a méně časově náročný.

Příkaz funguje s jakýmkoli programovacím jazykem, pokud lze kompilátor spustit pomocí příkazu shellu.

Kompilace je při práci s několika soubory přímočará. Proces tedy zahrnuje vyvolání kompilátoru a výpis názvů souborů.

Například ke kompilaci programu C ze tří souborů (file1.c , soubor2.c , soubor3.h ):

Vyvolejte kompilátor pomocí:

gcc file1.c file2.c file3.h

gcc příkaz vytvoří a.out soubor, což je standardní kompilovaný spustitelný soubor.

Změna jednoho ze zdrojových souborů však vyžaduje rekompilaci všeho, což je při práci s velkými aplikacemi ještě složitější. make příkaz automatizuje proces a umožňuje uživatelům aktualizovat pouze části, které je třeba změnit, aniž by museli znovu kompilovat každý soubor.

make příkaz používá uživatelem generovaný soubor Makefile ke kompilaci částí programu. Při prvním spuštění make hledá v Makefile instrukce, např. popisy souborů a časy úprav. Na základě dostupných údajů make rozhodne, které soubory je třeba aktualizovat, a vydá potřebné příkazy.

Co jsou soubory Makefiles?

Makefile je textový soubor obsahující sadu pravidel, která instruuje make jak vytvořit aplikaci. Pravidlo se skládá ze tří částí:cíl , závislosti a příkazy .

Základní syntaxe Makefile je:

target: dependencies
<TAB> commands

Části syntaxe jsou:

  • Cíle . Názvy souborů, které mají být vytvořeny nebo aktualizovány po provedení make .
  • Závislosti . Názvy souborů (oddělené mezerami), ze kterých je sestaven cíl.
  • Příkazy . Pravidla popisující, jak vytvořit nebo aktualizovat cíl, když se změní závislosti.

Jeden Makefile má několik sad pravidel. První pravidlo je výchozí a uvádí, jak má být konečný spustitelný soubor (cíl) vytvořen z dosud nevytvořených objektových souborů (závislosti):

Syntaxe v tomto případě je:

EXECUTABLE: Object file 1, Object file 2
<TAB> commands

Poznámka: Příkazy v Makefiles vždy následují za TAB klíč. Jinak příkaz nefunguje.

Po nastavení pravidla jedna uživatel přidá pokyny, jak vytvořit soubory objektů:

make příkaz funguje tak, že zkompiluje zdrojové soubory do objektových souborů a poté zkompiluje objektové soubory do cílového souboru, konečného spustitelného souboru. Syntaxe Makefile se třemi výše uvedenými pravidly je:

EXECUTABLE: Object file 1, Object file 2
<TAB> commands

Object file 1: Source file 1, Source file 2
<TAB> commands

Object file 2: Source file 2
<TAB> commands

Linux make Command Syntaxe

Základní make syntaxe vypadá takto:

make [OPTIONS]

Při spuštění bez argumentů make vytvoří první cíl ze souboru Makefile.

Linux make Command Options

make příkaz je široce používán kvůli jeho účinnosti, rozmanitosti a schopnosti provádět specifické akce. Zatímco příkaz vypíše výsledek při spuštění bez voleb, přidání argumentů rozšíří make 's použitelnost.

Zde jsou nejpoužívanější možnosti:

Příkaz Popis
-B , --always-make Bezpodmínečně zkompiluje všechny cíle.
-d , --debug[=FLAGS] Vytiskne informace o ladění.
-C dir , --directory=dir Změní adresář před spuštěním souboru Makefile.
-f file , --file=file , --Makefile=FILE Používá konkrétní soubor jako soubor Makefile.
-i , --ignore-errors Ignoruje všechny chyby v příkazech.
-I dir , --include-dir=dir Určuje adresář pro hledání zadaného Makefile.
-j [jobs] , --jobs[=jobs] Určuje počet úloh, které se mají spustit současně.
-k , --keep-going Pokračuje v běhu make co nejdéle po obdržení chyby.
-l [load] , --load-average[=load] Určuje, že pokud jsou ve frontě jiné úkoly, neměl by být spuštěn žádný nový úkol.
-n , --dry-run , --just-print , --recon Vytiskne očekávaný výstup bez provedení příkazu make .
-o file , --old-file=file , --assume-old=file Zajišťuje, že make nepředělá soubor, i když je starší než závislosti.
-p , --print-data-base Vytiskne databázi vytvořenou po přečtení souboru Makefile.
-q , --question Aktivuje režim otázek, ve kterém je make nespustí žádné příkazy, ale vrátí návratový stav nula, pokud je cíl již zkompilován.
-r , --no-builtin-rules Odstraní vestavěná implicitní pravidla.
-s , --silent , --quiet Omezuje tisk příkazů při jejich provádění.
-S , --no-keep-going , --stop Zastaví „-k , --keep-going "příkaz.
-t , --touch Dotýká se souborů místo spouštění příkazů.
--trace Sleduje dispozice každého cíle.
-W file , --what-if=file , --new-file=file , --assume-new=file Ignoruje skutečnost, že byl cílový soubor změněn.
--warn-undefined-variables Upozorňuje, že se odkazuje na neznámou proměnnou.

Příklady příkazů Linux make

Nejlepší způsob, jak porozumět make a Makefiles je spuštěním příkazu a různých možností v jednoduchém programu.

Chcete-li například vytvořit spustitelný soubor, který vytiskne zprávu "Další informace o Makefiles" , postupujte takto:

1. Vytvořte adresář s názvem Test .

2. Vytvořte tři zdrojové soubory main.c , text.c a text.h :

  • main.c - je soubor s hlavní funkcí (int main ), který volá funkci z jiného souboru.
  • text.c - je soubor se souborem, který chcete vytisknout "Další informace o Makefiles!".
  • text.h - je hlavičkový soubor s deklaracemi funkcí. Záhlaví je součástí obou c soubory s #include argument, který má stejný účel jako kopírování/vkládání obsahu záhlaví.

Následující části ilustrují některé běžné případy použití make a Makefiles na třech výše zmíněných souborech.

Poznámka: Následující příklady jsou napsány v jazyce C.

Vytvořit program

Existují dva způsoby, jak vytvořit program:

  • Zkompilujte soubory standardním způsobem vyvoláním kompilátoru gcc. Tato metoda je vhodná pro menší programy.
  • Pomocí make a Makefiles.

Vytvořte program pomocí kompilátoru gcc

Kompilátor gcc používejte pouze pro jednoduché programy. Jinak používejte Makefiles při práci s velkým počtem souborů.

Chcete-li vytvořit program pomocí kompilátoru:

1. Otevřete terminál a přejděte do adresáře obsahujícího soubory.

2. Vyvolejte gcc kompilátoru a zadejte název obou c soubory. Záhlaví se nezkompiluje, protože je již zahrnuto v c soubory.

gcc main.c text.c

3. Seznam všech souborů v aktuálním adresáři s ls příkaz:

ls

Terminál ukazuje, že nový spustitelný soubor a.out soubor je vytvořen. Spustitelný soubor je také vidět prostřednictvím průzkumníka souborů:

Chcete-li otestovat, zda byla kompilace úspěšná, vyvolejte spustitelný soubor pomocí:

./a.out

Terminál ukazuje, že spustitelný soubor funguje správně.

Vytvořte program pomocí Make a Makefiles

Kompilace souborů s make a Makefiles je jednodušší než použití kompilátoru. Začněte vytvořením nového textového dokumentu ve stejném adresáři a pojmenujte jej Makefile nebo makefile .

Otevřete soubor a jako vodítko použijte základní syntaxi Makefile:

1. Jako cíl zadejte název nového spustitelného souboru, například my_app.

2. Přidejte objektové soubory main.o a text.o jako závislosti. make příkaz znovu zkompiluje cíl pokaždé, když se objektové soubory změní.

3. Stiskněte TAB a vyvolejte gcc kompilátor pro objektové soubory:

<TAB> gcc main.o text.o

4. Přidejte -o označte a pojmenujte cíl my_app.

Po napsání prvního pravidla vypadá Makefile takto:

my_app: main.o text.o
<TAB> gcc main.o text.o -o my_app

Dále dejte souboru Makefile pokyny, jak vytvořit main.o :

1. Nastavte main.o jako cíl.

2. Zadejte main.c jako závislost. main.c slouží k vytvoření a aktualizaci main.o .

3. Napište následující příkaz pro aktualizaci main.o pokaždé main.c změny:

gcc -c main.c

4. Přidejte -c příznak, který dává Makefile pokyn, aby nevytvářel nový spustitelný soubor, ale pouze četl kód a kompiloval objektový soubor.

main.o: main.c
<TAB> gcc -c main.c

Chcete-li vytvořit text.o , nastavte tento soubor jako cíl a přidejte oba text.c a text.h jako závislosti. Nicméně gcc příkaz pouze zkompiluje text.c soubor, protože záhlaví se nikdy nezkompilují:

text.o: text.c text.h
<TAB> gcc -c text.c

Uložte soubor Makefile a zadejte make v terminálu.

make příkaz vytvořil dva objektové soubory (main.o a text.o ) a spustitelný soubor (moje_aplikace ).

Chcete-li ověřit, že make vytvořené nové soubory, spusťte ls znovu:

Terminál ukazuje, že spuštěním příkazu byla vytvořena aplikace my_app . Chcete-li spustit my_app soubor, zadejte:

./my_app

Aktualizujte program

Když se změní jeden zdrojový soubor, make aktualizuje pouze soubory objektů v závislosti na tomto zdrojovém souboru. Chcete-li například změnit text zobrazený při spuštění my_app z „Další informace o Makefiles “ na „Kde to jsem ?":

1. Otevřete text.c v textovém editoru:

2. Změňte text na „Kde jsem?“ :

3. Uložte soubor, otevřete terminál a spusťte make :

make příkaz zjistil změny v text.c a překompiloval pouze tento soubor.

Chcete-li ověřit změnu, spusťte spustitelný soubor:

./my_app

Zkompilujte všechny soubory

Ke kompilaci všech souborů a nejen změněných souborů použijte -B nebo --always-make možnosti.

Chcete-li například změnit text v souboru text.c soubor zpět do „Další informace o Makefiles“ a uložte soubor, zadejte:

make -B

Výstup ukazuje, že make zkompiloval všechny soubory ve složce, dokonce i ty, které nebyly změněny.

Vyčistit soubory objektů

Když uživatel spustí make poprvé příkaz vytvoří soubory objektů a spustitelný soubor. Chcete-li tedy uvolnit zdrojovou složku a vyčistit soubory objektů, přidejte clean funkce do souboru Makefile:

clean:
<TAB> rm *.o my_app

Příkaz se skládá z:

  • Čistý cíl bez závislostí - cíl je vždy považován za zastaralý a vždy proveden.
  • The rm příkaz - odstraní zadané objekty.
  • *.o část - porovnává soubory s o rozšíření a vyčistí objektové soubory a my_app .

Chcete-li vyčistit soubory objektů, spusťte:

make clean

Po spuštění ls terminál opět ukazuje, že soubory objektů a my_app byly odstraněny.

Spusťte make v režimu ladění

Spusťte make v režimu ladění vytisknout další informace o procesu kompilace. Proveďte make s -d možnost zobrazení výstupu ladění:

make -d

Použít jiný soubor jako soubor Makefile

Ve výchozím nastavení make hledá soubor s názvem Makefile nebo makefile v aktuálním adresáři. Chcete-li použít jiný soubor, spusťte:

make -f [file_name]

Pokud je například soubor Makefile pojmenován můj_soubor , proveďte:

make -f my_file

Použít proměnné

Proměnné v Makefiles představují vícenásobné názvy souborů, argumenty, cíle, závislosti, příkazy, zdrojové adresáře nebo jiné položky. Dále je proměnná definována jménem a představuje řetězec textu nazývaný hodnota proměnné.

Chcete-li definovat proměnnou, použijte = . Například nahraďte gcc s proměnnou C.

C=gcc

my_app: main.o text.o
<TAB> $ (C) main.o text.o -o my_app

main.o:main.c
<TAB> $ (C) -c main.c
        
text.o: text.c text.h
<TAB> $ (C) -c text.c

Při spuštění make v terminálu příkaz přečte C proměnná jako gcc :

Závěr

Poté, co si projdete příklady v tomto tutoriálu, víte, jak používat make příkaz v Linuxu a jak to funguje.

Dále si stáhněte cheat sheet pro příkazy Linuxu, kde se dozvíte další důležité příkazy systému Linux.


Linux
  1. příkaz chattr v Linuxu s příklady

  2. JQ Command v Linuxu s příklady

  3. V příkladech příkazů v Linuxu

  1. wc Linux Command s příklady

  2. Třídit příkaz v Linuxu s příklady

  3. soubor Příklady příkazů v Linuxu

  1. 10 Quick Linux Tail Command s příklady

  2. Linux ip příkaz s příklady

  3. 15 Příkaz Linux ps s příklady