Hva er en Makefile og hvordan fungerer den innen Linux?

Hva er en Makefile og hvordan fungerer den innen Linux

Si ønsker å kjøre eller oppdatere en oppgave når bestemte filer oppdatereskan merkeverktøyet komme til nytte. Make-verktøyet krever en fil, makefile, som definerer et sett med oppgaver som skal utføres.

Dette navnet høres kjent ut for mange av dere, ettersom du kanskje har brukt lage for å kompilere et program fra kildekoden. De fleste open source-prosjekter bruker make for å kompilere en endelig kjørbar binær, som kan installeres ved hjelp av make install.

denne gangen vi kommer til å forstå hvordan denne typen filer fungerer i Linux.

En makefile-fil Det skilles i utgangspunktet i fire grunnleggende typer utsagn:

  • Kommentarer
  • Variabler
  • Eksplisitte regler.
  • Implisitte regler.

De eksplisitte reglene forteller om hvilke filer som er avhengige av andre filer, samt kommandoene som kreves for å kompilere en bestemt fil.

Mens de implisitte ligner de eksplisitte, men med forskjellen indikerer de kommandoene som skal utføres, men i stedet bruker filtypene for å bestemme hvilke kommandoer som skal utføres.

I dette eksemplet skal vi ikke bruke disse to siste, Vi skal bare begynne med å trykke klassikeren "Hello World" i terminalen.

For dette skal vi lage en tom katalog med navnet du ønsker.

I dette tilfellet la oss kalle det "eksempel-lag" og innenfor dette vi skal lage en makefile med følgende innhold:

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

kjør filen ved å skrive make inne i katalogen, vil utdataene være:

make
echo "Hola Mundo"
Hola Mundo

Som du kan se når makefilen ble kjørt, vises kommandoekkoet "Hello World", etterfulgt av utdataene fra den faktiske kommandoen. Vi vil ofte ikke ha det. For å undertrykke denne utgangen når du kjører make, er det bare å legge til et "@" før ekko:

Det praktiske eksemplet på dette er:

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

vi kan fortsette å kjøre makefilen igjen. Utgangen nettopp dette skal vise:

make
Hola Mundo

Dette er ganske grunnleggende. Men som du vet inneholder makefiles mange ting, som de indikerer sekvensene som skal følges.

Vi kan legge til noen enkle sekvenser i denne filen.

Hva vi skal gjøre er å redigere filen som følger:

#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

Når du kjører om makefilen, dette vil bare utføre det første målet. Det er fordi bare det første målet i makefilen er standardmålet.

Å kjøre i rekkefølge det er nødvendig å indikere det i filen med "alle". Det er ansvaret "der" å kalle andre mål.

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

Du kan fortsette å utføre make igjen, og du vil se at inne i katalogen heter en fil "File.txt".

Tilsvarende det er mulig å kunne utføre et mål inne i makefile-filen, dette er generelt mye brukt.

Vi skal endre filen vår, og vi skal legge til følgende på slutten:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Du kan kjøre make igjen, og det vil gjenskape txt-filen. Som du vil se, vil det gjøre det samme som forrige gang. Men nå skal vi utføre målet som er inne i makefile-filen.

Vi gjør dette med:

make clean

Med dette kan vi lære noe ganske grunnleggende om å lage filer og hvordan de kan være ganske nyttige hvis vi vil automatisere noen ting.

Åpenbart kan du bygge en større og mer kompleks fil, men dette er bare et eksempel for nybegynnere (inkludert meg selv) som blir kjent med hvordan dette fungerer.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   arg0s sa

    Veldig interessant artikkel. Et spørsmål ... det du kaller "variabler" ville ikke være funksjoner eller metoder?

    1.    David naranjo sa

      Faktisk, ja min venn, takk for rettelsen.
      Jubel! 🙂

  2.   Pedro sa

    Utmerket, jeg håper du fortsetter å grave.

  3.   manuell alcocer sa

    Vel, hverken den ene eller den andre, https://www.gnu.org/software/make/manual/make.html, er "mål"

  4.   manuell alcocer sa

    regler

  5.   Sebas sa

    Forhåpentligvis fortsetter de å forklare ting som dette, "allestedsnærværende og elementært", i den daglige driften av Linux, som ingen noen gang forklarer med samme lidenskap som hvordan disse "fordelene og driften" blir forkynt.