GNU Make

GNU Make Tutorial

GNU Make Tutorial

A GNU Make egy olyan eszköz, amely segít futtatható programok létrehozásában a forráskódból, és a projekt egyéb nem forrásfájljainak feldolgozásában is. A Make megkapja a futtatható fájlok létrehozásának és más nem forrásfájlok feldolgozásának logikáját az a nevű fájlból makefile vagy a Makefile.

Miért Make?

A Make telepítése

A gyártás önmagában nem elegendő a programok felépítéséhez. A programok forrásból történő összeállításához fordítókkal és más eszközökkel kell rendelkeznie a rendszeren. Szükségünk van a fejlesztési eszközök teljes készletére a célunkhoz.

Források Linuxon történő összeállításához van egy „build-essential” nevű csomag a Debian-alapú rendszereken (pl.g. Ubuntu, Linux Mint stb.) És a „Fejlesztő eszközök” a Red Hat és a CentOS rendszeren.

Ennek telepítése Debian alapú rendszerekre:

apt-get install build-essential

Ennek telepítése a CentOS és a Red Hat futtatására:

yum groupinstall "Fejlesztő eszközök"

A Makefile használatának megkezdése

Kezdjük azzal, hogy megírjuk a Helló Világ program a C programozási nyelvvel.

A C programunk fő funkciója bent marad hellomain.c. A fájl tartalmának a következőképpen kell kinéznie:

#include  int main () my_fun (); visszatér 0;  

Ez a kód tartalmazza a hellofun fejlécfájlt.h, amely tartalmazza a hello_fun () nevű függvény deklarációját. A hellofun tartalma.övé:

void my_fun ();

A my_fun () meghatározása a hellofun belsejében él.c:

#include  #include  void my_fun () printf ("Hello Világ!\ n "); return;

Ez egy nagyon egyszerű program, és a gcc segítségével csak egy parancssorral fordíthatnánk le. De a való élet programjai nem ilyen egyszerűek és olyan kicsiek, mint ez. A dolgok nagyon hamar összetetté válnak.  Az alábbiakban megírom a szükséges makefile szkriptet ennek a hello world programnak a fordításához. A következő szakaszokban elmagyarázom annak különböző részeit.

hellomain: hellomain.c hellofun.c gcc -o szia hellomain.c hellomain.c -I.

Tartsa ezt a kódot a makefile nevű fájlban (fájlkiterjesztés nélkül). Helyezze a fájlt abba a könyvtárba, ahol a C fájlok vannak. Mutasson a parancssorra ebben a könyvtárban. A parancssorba írja a make parancsot, és nyomja meg az Enter billentyűt. Hello nevű futtatható fájl jön létre az aktuális könyvtárban. Az eredményt a futtatható fájl futtatásával ellenőrizheti a következő paranccsal.

./Helló

Kimenetek:

Helló Világ!

Szabályok, célok és függőségek

A makefile szkript szabályok gyűjteménye. A szabályok arra utasítják, hogy készítsenek célokat vagy kimeneteket forrásból vagy más fájlokból. A szabály meghatározza a cél függőségeit is. Először a függőségi szabályokat kell végrehajtani, attól függően, hogy ezt már feldolgozták-e az időbélyegek megtekintésével. Példánkban makefile fent van egy szabályunk, amelynek neve meg van nevezve hellomain és annak függőségei. A cél nevét kettőspont választja el a függőségi listától. A végrehajtandó shell parancsokat a következő sor sorolja fel. A shell parancsoknak tabulátor karakterrel kell kezdődniük.

Ha a make paranccsal nem ad meg paramétert, akkor az első cél végrehajtásra kerül. Példánkban nem adtunk meg paramétert, és megadtuk hellomain mint első és egyetlen célpont.

Változók

A változó nagyszerű módja annak, hogy egyszer értéket írjon és többször használja, anélkül, hogy újra és újra megismételné az értéket. Segít megőrizni a DRY kódunkat (ne ismételje meg önmagát). Ha valaha is módosítania kell valamilyen értéket az egész szkriptben, akkor ezt csak egy helyen kell megváltoztatnia, hogy a változást mindenhol tükrözze, ha változót használ.

Példánkban használtuk gcc mint fordító, de lehet, hogy a fordítót valami másra kell cserélnünk. Tehát megtarthatjuk a fordító nevét egy változóban. Emellett a fordító jelzőit egy másik változóban is megtarthatjuk, hogy ezt újra felhasználhassuk. Egy változó értékének beállításához egyenlőségjelet (=), a változó beolvasásához pedig $ (változó_neve).

CC = gcc CFLAGS = -I. hellomain: hellomain.c hellofun.c $ (CC) - hello hellomain.c hellomain.c $ (CFLAGS)

A környezet tisztítása

Gyakran előfordulhat, hogy meg kell tisztítanunk a környezetünket. Ha azt akarjuk, hogy projektünk minden darabját a semmiből építsék fel, meg kell tisztítanunk. Egyszerű példánkban az egyetlen fájl jön létre, amely Helló végrehajtható. Anélkül, hogy ezt manuálisan törölnénk, a make használatával törölhetjük. Tehát létrehozhatunk erre egy szabályt, és megnevezhetjük a célpontot tiszta.

CC = gcc CFLAGS = -I. hellomain: hellomain.c hellofun.c $ (CC) -o szia hellomain.c hellomain.c $ (CFLAGS) tiszta: rm hello

A tiszta célban lévő shell parancs csak az ókori shell parancs rm. Most a parancssorból hajtsa végre:

tisztává tenni

Nézze meg az aktuális könyvtárat, hogy a Helló a futtatható fájl eltűnt.

Példánk bővítése további problémák megoldására

Egyszerű hello world összeállítási példánkban van egy probléma, amelyet még nem oldottunk meg. hellomain célpont néz hellomian.c és pokolian.c a fájlok időbélyegzői, amikor legközelebb megpróbálja újrafordítani készítsen vagy hogy hellomain. Tehát, ha megváltoztatja a két fájl bármelyikét, azokat újrafordítják. De, ha megváltozik pokolian.h akkor nem fog újrafordulni. Ez váratlan!

Ismét kihagytunk egy középszintet. Nem az objektumfájlokat hoztuk létre, és közvetlenül a futtatható fájlt hoztuk létre. De a színfalak mögött az objektumfájlok egy ideiglenes könyvtárban jönnek létre és törlődnek. Az objektumfájlokat elő akarjuk állítani a futtatható fájl létrehozása előtt. Ezúttal a fő célpontot nevezzük el minden

mind: hellomain.o pokolian.o gcc hellomain.o pokolian.o-hello hellomain.o: hellomain.c hellofun.h gcc -I. -c hellomain.c hellofun.o: hellofun.c hellofun.h gcc -I. -c hellofun.c tiszta: rm -rf *.o rm szia

Futtassa újra a make parancsot, és ellenőrizze, hogy a program sikeresen épít-e vagy sem. Futtassa a Hello programot az eredmény ellenőrzéséhez. Nézze meg az aktuális könyvtárat, és látni fogja, hogy objektumfájlok jönnek létre. Az objektumfájlok tisztításához további egy sort adtunk a tiszta célhoz. Ez a makefile szkript akkor is segít a hello world program újrafordításában, ha a pokolian.h fájl módosítva.

Következtetés

A Make az egyik legfontosabb eszköz a linux-felhasználók és a programozók számára. Ha végfelhasználó vagy, akkor a gyártás ismerete segít megjavítani sok törött dolgot a linux világában. Ha Ön programozó, akkor egyszerűen nem tud elmenni a kód megírásával, és hagyja, hogy a felhasználók kitalálják, hogyan fordítsák le ezt a forráskódot futtatható fájlokra. Létre kell hoznia egy makefile szkriptet a végfelhasználók számára, hogy ne játsszanak valamilyen kitaláló játékot a forrás futtatható fájlokba fordításához.

Hivatkozások

GNUMake projekt honlapja
GNU Dokumentáció készítése

A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...
A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...