Vad är en Makefile och hur fungerar den inom Linux?

Vad är en Makefile och hur fungerar den inom Linux

Si vill köra eller uppdatera en uppgift när vissa filer uppdateras, gör verktyget kan vara till nytta. Make-verktyget kräver en fil, makefile, som definierar en uppsättning uppgifter som ska utföras.

Det här namnet kommer att låta bekant för många av er eftersom ni kan ha använt make för att kompilera ett program från källkoden. De flesta öppna källkodsprojekt använder make för att sammanställa en slutlig körbar binär, som kan installeras med make install.

denna gång låt oss förstå hur denna typ av filer fungerar inom Linux.

En makefil-fil Det skiljer sig i princip in i fyra grundläggande typer av uttalanden:

  • Kommentarer
  • Variabler.
  • Explicita regler.
  • Underförstådda regler.

Explicit Rules anger vilka filer som är beroende av andra filer, liksom de kommandon som krävs för att kompilera en viss fil.

Medan de implicita liknar de explicita, men med skillnaden indikerar de kommandona att utföra, men använder filtilläggen för att bestämma vilka kommandon som ska köras.

I det här exemplet ska vi inte använda de två sista, Vi börjar bara med att skriva ut den klassiska "Hello World" i terminalen.

För detta ska vi skapa en tom katalog med det namn du vill ha.

I det här fallet låt oss kalla det "exempel-make" och inom detta Vi ska skapa en makefile med följande innehåll:

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

Nu kör filen genom att skriva make i katalogen, utdata kommer att vara:

make
echo "Hola Mundo"
Hola Mundo

Som du kan se när makefilen kördes visas kommandoekot "Hello World" följt av utdata från det faktiska kommandot. Det vill vi ofta inte. För att undertrycka denna utgång när du kör make, lägg bara till ett "@" före eko:

Det praktiska exemplet på detta är:

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

Nu vi kan fortsätta att köra makefilen igen. Utgången just detta ska visa:

make
Hola Mundo

Detta är ganska grundläggande. Men som ni vet innehåller makefiler många saker, av vilka de anger de sekvenser som ska följas.

Vi kan lägga till några enkla sekvenser i den här filen.

vad vi ska göra är att redigera filen enligt följande:

#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 kör om makefilen, detta kommer bara att utföra det första målet. Det beror på att endast det första målet i makefilen är standardmålet.

För att körningen ska utföras i sekvens det är nödvändigt att ange det i filen med "allt". Det är ansvaret för "där" att kalla andra 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 fortsätta att köra make igen och du kommer att se att det finns en fil i katalogen "File.txt".

På samma sätt det är möjligt att kunna köra ett mål inuti makefile-filen, detta är i allmänhet mycket använt.

Vi kommer att ändra vår fil och vi kommer att lägga till följande i slutet:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Du kan köra om igen och det återskapar txt-filen. Som du kommer att se kommer det att göra samma sak som förra gången. Men nu ska vi köra målet som finns i makefile-filen.

Vi gör detta med:

make clean

Med detta kan vi lära oss något helt grundläggande om att skapa filer och hur de kan vara ganska användbara om vi vill automatisera vissa saker.

Uppenbarligen kan du bygga en större och mer komplex fil, men det här är bara ett exempel för nybörjare (jag inkluderar mig själv) som lär sig hur detta fungerar.


6 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   arg0s sade

    Mycket intressant artikel. En fråga ... vad du kallar "variabler" skulle inte vara funktioner eller metoder?

    1.    David naranjo sade

      I själva verket, ja min vän, tack för rättelsen.
      Skål! 🙂

  2.   Peter sade

    Utmärkt, jag hoppas att du fortsätter att gräva.

  3.   manuelalcocer sade

    Tja, varken det ena eller det andra, https://www.gnu.org/software/make/manual/make.html, är "mål"

  4.   manuelalcocer sade

    regler

  5.   Sebas sade

    Förhoppningsvis fortsätter de att förklara saker som detta, "allestädes närvarande och elementärt", i den dagliga driften av Linux, som ingen någonsin förklarar med samma passion som hur dessa "fördelar och funktion" predikas.