Što je Makefile i kako to funkcionira u Linuxu?

Što je Makefile i kako to radi u Linuxu

Si želite pokrenuti ili ažurirati zadatak kada se ažuriraju određene datoteke, uslužni program make može dobro doći. Uslužni program make zahtijeva datoteku makefile koja definira skup zadataka koje treba izvršiti.

Mnogi od vas će ovo ime zvučati poznato jer ste možda koristili make za sastavljanje programa iz izvornog koda. Većina projekata otvorenog koda koristi make za sastavljanje konačne izvršne binarne datoteke, koja se može instalirati pomoću make install.

Ovom prilikom shvatimo kako ova vrsta datoteka radi u Linuxu.

Makefile datoteka U osnovi se razlikuje u četiri osnovne vrste izjava:

  • Komentari
  • Varijable
  • Eksplicitna pravila.
  • Implicitna pravila.

Eksplicitna pravila govore koja datoteka ovisi o drugim datotekama, kao i naredbe potrebne za sastavljanje određene datoteke.

Iako su implicitne slične eksplicitnim, ali s razlikom ukazuju na naredbe za izvršenje, ali make koristi ekstenzije datoteka da bi odredile koje naredbe treba izvršiti.

U ovom primjeru nećemo koristiti ove dvije posljednje, Počet ćemo samo ispisivanjem klasičnog "Hello World" na terminalu.

Za ovo ćemo stvoriti prazan direktorij s imenom koje želite.

U ovom slučaju nazovimo to "primjer-napravi" i unutar ovoga Stvorit ćemo makefile sa sljedećim sadržajem:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Sada pokrenite datoteku upisivanjem make unutar direktorija, izlaz će biti:

make
echo "Hola Mundo"
Hola Mundo

Kao što vidite kada je izvršena make datoteka, prikazuje se naredba echo "Hello World", nakon čega slijedi izlaz stvarne naredbe. To često ne želimo. Da biste suzbili ovaj izlaz kada pokrenete make, samo dodajte znak "@" prije odjeka:

Praktični primjer ovoga je:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Sada možemo ponovo pokrenuti makefile. Izlaz koji bi trebao prikazati samo ovaj:

make
Hola Mundo

Ovo je prilično osnovno. Ali kao što znate, make datoteke sadrže puno stvari, od kojih one ukazuju na sekvence koje treba slijediti.

U ovu datoteku možemo dodati nekoliko jednostavnih sekvenci.

Šta što ćemo napraviti je urediti datoteku na sljedeći način:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Prilikom ponovnog pokretanja make datoteke, ovo će izvršiti samo prvi cilj. To je zato što je samo prvi cilj u datoteci make zadani cilj.

Da se trči u nizu potrebno je u datoteci označiti sa "all". Odgovornost je „tamo“ da poziva druge ciljeve.

all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Možete ponovo pokrenuti make i vidjet ćete da se unutar direktorija zove datoteka "File.txt".

Na isti način moguće je izvršiti cilj unutar datoteke makefile, ovo se uglavnom koristi.

Izmijenit ćemo našu datoteku i na kraju ćemo dodati sljedeće:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Možete ponovo pokrenuti make i on će ponovno stvoriti txt datoteku. Kao što ćete vidjeti, učinit će isto što i prethodni put. Ali sada ćemo izvršiti cilj koji se nalazi u datoteci makefile.

To radimo sa:

make clean

Ovim možemo znati nešto sasvim osnovno o make datotekama i kako one mogu biti vrlo korisne ako neke stvari želimo automatizirati.

Očito je da možete napraviti veću i složeniju datoteku, ali ovo je puki primjer za početnike (uključujući i sebe) koji se upoznaju s tim kako to funkcionira.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   arg0s rekao je

    Vrlo zanimljiv članak. Pitanje ... ono što nazivate "varijablama" nisu funkcije ili metode?

    1.    David naranjo rekao je

      Zapravo, da, prijatelju, hvala na ispravci.
      Živjeli! 🙂

  2.   pedro rekao je

    Odlično, nadam se da ćete nastaviti kopati.

  3.   manuelalcocer rekao je

    Pa, ni jedno ni drugo, https://www.gnu.org/software/make/manual/make.html, su "mete"

  4.   manuelalcocer rekao je

    pravila

  5.   sebas rekao je

    Nadamo se da će i dalje objašnjavati ovakve stvari, "sveprisutne i elementarne" svakodnevnog rada Linuxa, što nikada niko ne objašnjava sa istom strašću kao što se propovedaju te "prednosti i rad".