A Unix és Linux parancs megértése: make
A make segédprogram automatikusan meghatározza, hogy egy nagy program mely részeit kell újrafordítani, és kiadja a parancsokat az újrafordításhoz. A kézikönyv leírja a make GNU implementációját, amelyet Richard Stallman és Roland McGrath írt.
A make segédprogram nem korlátozódik a programokra. Használhatja minden olyan feladat leírására, ahol bizonyos fájlokat automatikusan frissíteni kell másoktól, amikor a többi fájl megváltozik. A make parancsot leggyakrabban olyan közös folyamatokban használják, amelyek a forráskódból szoftvert készítenek.

A Make parancs használata Linuxban
Ez egy gyakori példa a make parancs használatára Linuxon. Általában ez egy egyszerű, három lépésből álló folyamat része, amelynek során nyílt forráskódú alkalmazásokat készítenek a forráskódjukból.
Ezek a példák mutatják C programok mivel ezek a legelterjedtebbek, de használhatjuk a make-t bármilyen programozási nyelvvel, amely shell paranccsal tudja futtatni a fordítóját.
-
Telepítse a Git-et, ha nem rendelkezik vele, a szoftverépítő eszközökkel együtt.
apt install git build-essential
-
Válasszon egy alkalmazást, amellyel dolgozni szeretne, vagy töltse le a VLC-t.
apt build-dep vlc
-
Klónozza a VLC forráskódot.
git klón https://github.com/videolan/vlc.git
-
Módosítsa a könyvtárakat a klónozott VLC-forráskódra, és futtassa a konfigurációs parancsfájlt.
cd vlc
./bootstrap
./Beállítás -
Futtassa a készítsenek parancsot a -j zászlót, majd a rendszerben lévő CPU magok/szálak számát.
make -j4
-
Ennek befejezése eltart egy ideig. Ha kész, telepítse az alkalmazást a következővel: telepítse.
sudo make install
végeztél.
Leggyakrabban így fogja látni a make parancsot. Lehetnek ennél bonyolultabb eljárások vagy kisebb eltérések, de soha nem túl bonyolult.
Hogyan működik a GNU parancs?
Az alábbi szakasz a make parancs technikai részletét mutatja be. Ha a lehető legtöbbet szeretné kihozni a gyártásból, tekintse meg az alábbi lehetőségeket.
Ez az oldal a GNU make dokumentációjának kivonata. Csak alkalmanként frissül, mert a GNU projekt nem használja az nroff-ot. A teljes, aktuális dokumentációt az információs fájlban találja make.info amely a Texinfo forrásfájlból készül make.texinfo.
A make Utility szintaxisa és előkészítése
A make segédprogram szintaxisa az készítsenek [ -fmakefile ] [ választási lehetőség ]... cél...
A make használatának előkészítéséhez meg kell írnia egy fájlt, melynek neve a makefile amely leírja a fájlok közötti kapcsolatokat a programban, és kimondja az egyes fájlok frissítéséhez szükséges parancsokat. Jellemzően egy végrehajtható fájl objektumfájlokból frissül, amelyek viszont forrásfájlok fordításával készülnek.
Amint egy megfelelő makefile létezik, minden egyes forrásfájl megváltoztatásakor a shell parancs készítsenek elegendő az összes szükséges újrafordítás elvégzéséhez. A make program a makefile adatbázist és a fájlok utolsó módosítási idejét használja annak eldöntésére, hogy mely fájlokat kell frissíteni. Mindegyik fájlhoz kiadja az adatbázisban rögzített parancsokat.
A make segédprogram parancsokat hajt végre a makefile-ben egy vagy több célnév frissítéséhez, ahol név általában egy program. Ha nem -f lehetőség van, keresse meg a makefile-okat GNUmakefile, makefile, és Makefile, abban a sorrendben.
Általában a makefile-t is meg kell hívni makefile vagy Makefile. (Javasolt a Makefile használata, mert jól láthatóan megjelenik a címtárlista elején, más fontos fájlok, például a README közelében.) A keresztnév-ellenőrzött GNUmakefile a legtöbb számára nem ajánlott makefiles. Csak akkor használja ezt a nevet, ha egy makefile a GNU make-ra vonatkozik, és a make más verziói nem fogják megérteni. Ha a makefile az -, a szabványos bemenet beolvasásra kerül.
Az készítsenek A segédprogram frissíti a célt, ha az előfeltétel-fájloktól függ, amelyeket a cél legutóbbi módosítása óta módosítottak, vagy ha a cél nem létezik.
A Make Utility beállításai
Az -b és -m opciókat figyelmen kívül hagyjuk a make más verzióival való kompatibilitás miatt.
-C dir módosul könyvtári kaz mielőtt elolvasná a makefile-eket vagy bármi mást csinálna. Ha több -C opciók vannak megadva, mindegyik az előzőhöz képest értelmeződik: -C / -C stb egyenértékű a -C /stb. Ezt általában a make rekurzív meghívásainál használják.
Az -d opció hibakeresési információkat nyomtat a normál feldolgozás mellett. A hibakeresési információk azt mondják, hogy mely fájlok újraalkotását fontolgatják, és melyik fájlidőket hasonlítják össze és milyen eredménnyel, mely fájlokat kell újra elkészíteni, és mely implicit szabályokat veszik figyelembe és melyek azok alkalmazott.
Az -e Az opció a környezetből vett változóknak elsőbbséget ad a makefiles változóival szemben.
Az -f fájltopciót használ fájlt makefileként.
Az -én Az opció figyelmen kívül hagyja a fájlok újrakészítéséhez végrehajtott parancsok összes hibáját.
Az -ÉN diropció megad egy könyvtárat dir a mellékelt makefájlok kereséséhez. Ha több -én opciók segítségével több könyvtárat is megadhatunk, a könyvtárak keresése a megadott sorrendben történik. Ellentétben az argumentumokkal, amelyek a make, könyvtárak más jelzőivel rendelkeznek -ÉN a zászlók közvetlenül a zászló után következhetnek: -Idir megengedett, valamint -I rendező. Ez a szintaxis megengedett a C előfeldolgozóval való kompatibilitás érdekében -ÉN zászló.
Az -j állások opció határozza meg a munkahelyek száma (parancsok) egyidejű futtatásához. Ha több is van -j lehetőség, az utolsó a hatásos. Ha a -j Az opció argumentum nélkül van megadva, a make nem korlátozza az egyidejűleg futó jobok számát.
Az -k opció hiba után is a lehető legnagyobb mértékben folytatódik. A megbukott célpont és a tőle függő célpont nem alakítható újra. Ezeknek a céloknak a többi függősége azonban ugyanúgy feldolgozható.
Az -l és - rakom Az opciók azt határozzák meg, hogy ne induljanak el új jobok (parancsok), ha más jobok futnak, és a terhelés átlaga legalább Betöltés (lebegőpontos szám). Argumentum nélkül eltávolítja a korábbi terhelési korlátot.
Az -n Az opció kiírja a végrehajtandó parancsokat, de nem hajtja végre azokat.
Az -o fájltopció nem készíti újra a fájlt még akkor is, ha régebbi, mint a függőségei, és nem készít át semmit a változás miattfájlt. Lényegében a fájlt régiként kezeli, és a szabályait figyelmen kívül hagyja.
Az -o Az opció kiírja a makefiles beolvasásából származó adatbázist (szabályokat és változóértékeket). Ezután a szokásos módon vagy más módon végrehajtódik. Ez egyben kinyomtatja a által megadott verzióinformációkat is -v kapcsoló (lásd lent). Ha ki szeretné nyomtatni az adatbázist anélkül, hogy megpróbálná újrakészíteni a fájlokat, használja a készítsenek-o-f/dev/null.
Az -q opció beállítja a kérdés módot. Nem futtat semmilyen parancsot és nem nyomtat semmit. Nulla kilépési állapotot ad vissza, ha a megadott célok naprakészek, egyébként nullától eltérőt.
Az -r opció kiküszöböli a beépített implicit szabályok használatát. Törli az utótagszabályok utótagjainak alapértelmezett listáját is.
Az -s opció elnémítja a műveletet. Nem nyomtatja ki a parancsokat végrehajtásuk közben.
Az -S opció törli a hatását -k választási lehetőség. Ez nem szükséges, kivéve egy rekurzív makewhere-ben -k örökölhető a legfelső szintű gyártótól a MAKEFLAGS-en keresztül, vagy ha beállítja -k a MAKEFLAGS-ban a környezetében.
Az -t Az opció megérinti a fájlokat (megjelöli őket frissítés nélkül), ahelyett, hogy futtatná a parancsaikat. Ezt arra használják, hogy úgy tegyenek, mintha a parancsokat végrehajtották volna, hogy megtévessze a jövőbeni make invokációkat.
Az -v Az opció kinyomtatja a make program verzióját, valamint a szerzői jogot, a szerzők listáját és egy figyelmeztetést, hogy nincs garancia.
Az -w Az opció más feldolgozás előtt és után a munkakönyvtárat tartalmazó üzenetet nyomtatja ki. Ez hasznos lehet a rekurzív makeparancsok bonyolult fészkeiből származó hibák kereséséhez.
Az -W fájlt opció úgy tesz, mintha a célfájltmódosult. Amikor együtt használják a -n flag, ez megmutatja, mi történne, ha módosítaná a fájlt. Nélkül -n, ez majdnem ugyanaz, mint a futtatás a érintés parancsot az adott fájlon a make futtatása előtt, kivéve, hogy a módosítási idő csak a make képzeletében változik.