Forstå Unix- og Linux-kommandoen: make
Make-verktøyet bestemmer automatisk hvilke deler av et stort program som må rekompileres, og utsteder kommandoene for å rekompilere dem. Manualen beskriver GNU-implementeringen av make, som ble skrevet av Richard Stallman og Roland McGrath.
Make-verktøyet er ikke begrenset til programmer. Du kan bruke den til å beskrive enhver oppgave der noen filer må oppdateres automatisk fra andre når de andre endres. Make-kommandoen brukes oftest i en vanlig prosess for å bygge programvare fra kildekoden.

Hvordan bruke Make-kommandoen i Linux
Dette er et vanlig eksempel på hvordan man bruker kommandoen make på Linux. Vanligvis er det en del av en enkel tre-trinns prosess å bygge åpen kildekode-apper fra kildekoden.
Disse eksemplene viser C-programmer siden disse er mest vanlige, men du kan bruke make med et hvilket som helst programmeringsspråk som kan kjøre kompilatoren med en shell-kommando.
-
Installer Git, hvis du ikke har det, sammen med programvarebyggingsverktøyene.
apt install git build-essential
-
Velg en app du vil jobbe med, eller last ned VLC.
apt build-dep vlc
-
Klon VLC-kildekoden.
git klone https://github.com/videolan/vlc.git
-
Endre kataloger til den klonede VLC-kildekoden, og kjør konfigurasjonsskriptet.
cd vlc
./Støvelhempe
./konfigurere -
Kjør gjøre kommando sammen med -j flagg, etterfulgt av antall CPU-kjerner/-tråder systemet ditt har.
lage -j4
-
Det vil ta litt tid å fullføre. Når det er ferdig, installer appen med gjøre installer.
sudo make install
Du er ferdig.
Oftere enn ikke, dette er hvordan du vil se make-kommandoen brukt. Det kan være mer komplekse prosedyrer enn dette eller små variasjoner, men det er aldri for komplisert.
Hvordan fungerer GNU-kommandoen?
Avsnittet nedenfor er en teknisk oversikt over make-kommandoen. Hvis du ønsker å få mest mulig ut av det, kan du se alternativene nedenfor.
Denne siden er et utdrag av dokumentasjonen til GNU-fabrikatet. Den oppdateres bare av og til fordi GNU-prosjektet ikke bruker nroff. For fullstendig, gjeldende dokumentasjon, se infofilen make.info som er laget fra Texinfo-kildefilen make.texinfo.
Syntaks og forberedelse av merkeverktøyet
Syntaksen til make-verktøyet er gjøre [ -fmakefil ] [ alternativ ]... mål...
For å forberede deg til å bruke make, må du skrive en fil som heter makefil som beskriver relasjonene mellom filene i programmet og angir kommandoene for oppdatering av hver fil. Vanligvis en kjørbar fil oppdateres fra objektfiler, som igjen lages ved å kompilere kildefiler.
Når en passende make-fil eksisterer, hver gang du endrer noen kildefiler, kommer shell-kommandoen gjøre tilstrekkelig til å utføre alle nødvendige rekompileringer. Make-programmet bruker makefile-databasen og de siste endringstidene for filene for å bestemme hvilke filer som må oppdateres. For hver av disse filene utsteder den kommandoene som er registrert i databasen.
Make-verktøyet utfører kommandoer i makefilen for å oppdatere ett eller flere målnavn, hvor Navn er vanligvis et program. Hvis nei -f alternativet er tilstede, se etter makefilene GNUmakefile, makefil, og Makefile, i den rekkefølgen.
Normalt bør du kalle makefilen heller makefil eller Makefile. (Det anbefales at du bruker Makefile fordi den vises tydelig nær begynnelsen av en katalogoppføring, i nærheten av andre viktige filer som README.) Den første navnesjekkede, GNUmakefile, anbefales ikke for de fleste makefiler. Bruk kun dette navnet hvis en make-fil er spesifikk for GNU-fabrikat og ikke vil bli forstått av andre versjoner av make. Hvis makefile er -, leses standardinngangen.
De gjøre verktøyet oppdaterer et mål hvis det avhenger av forutsetningsfiler som har blitt endret siden målet sist ble endret, eller hvis målet ikke eksisterer.
Alternativer for Make Utility
De -b og -m alternativer ignoreres for kompatibilitet med andre versjoner av merke.
-C dir endringer til katalog dir før du leser makefilene eller gjør noe annet. Hvis flere -C alternativer er spesifisert, hver tolkes i forhold til den forrige: -C / -C osv tilsvarer -C /etc. Dette brukes vanligvis med rekursive påkallelser av fabrikat.
De -d alternativet skriver ut feilsøkingsinformasjon i tillegg til normal behandling. Feilsøkingsinformasjonen sier hvilke filer som vurderes for gjenskaping, hvilke filtider som sammenlignes og med hvilke resultater, hvilke filer som må lages om, og hvilke implisitte regler som vurderes og hvilke anvendt.
De -e alternativet gir variabler hentet fra miljøet forrang over variabler fra makefiler.
De -f filalternativet bruker fil som en makefile.
De -Jeg alternativet ignorerer alle feil i kommandoer som utføres for å gjenskape filer.
De -JEG diralternativet spesifiserer en katalog dir for å søke etter inkluderte make-filer. Hvis flere -Jeg alternativer brukes til å spesifisere flere kataloger, katalogene søkes i den angitte rekkefølgen. I motsetning til argumentene til andre flagg av merke, kataloger med -JEG flagg kan komme rett etter flagget: -Idir er tillatt, samt -Jeg dir. Denne syntaksen er tillatt for kompatibilitet med C-forprosessoren -JEG flagg.
De -j jobber alternativet spesifiserer antall jobber (kommandoer) for å kjøre samtidig. Hvis det er mer enn én -j alternativet, er den siste effektiv. Hvis -j alternativet er gitt uten argument, make begrenser ikke antall jobber som kjører samtidig.
De -k alternativet fortsetter så mye som mulig etter en feil. Målet som mislyktes, og de som er avhengige av det, kan ikke gjenskapes. Imidlertid kan de andre avhengighetene til disse målene behandles på samme måte.
De -l og -Jeg laster alternativer spesifiserer at ingen nye jobber (kommandoer) skal startes hvis det er andre jobber som kjører, og belastningsgjennomsnittet er minst laste (et flyttallnummer). Uten argument fjerner den en tidligere belastningsgrense.
De -n alternativet skriver ut kommandoene som vil bli utført, men utfører dem ikke.
De -o filalternativet gjør ikke om fil selv om det er eldre enn dets avhengigheter og ikke gjenskaper noe på grunn av endringer ifil. I hovedsak blir filen behandlet som gammel og reglene ignoreres.
De -s option skriver ut databasen (regler og variabelverdier) som er et resultat av lesing av make-filene. Den kjøres deretter som vanlig eller som annet spesifisert. Dette skriver også ut versjonsinformasjonen gitt av -v bryter (se nedenfor). For å skrive ut databasen uten å prøve å lage noen filer på nytt, bruk gjøre-s-f/dev/null.
De -q alternativet setter spørsmålsmodus. Den kjører ingen kommandoer eller skriver ut noe. Den returnerer en utgangsstatus som er null hvis de angitte målene er oppdatert, ellers ikke null.
De -r alternativet eliminerer bruken av de innebygde implisitte reglene. Den sletter også standardlisten over suffikser for suffiksregler.
De -s alternativet demper operasjonen. Den skriver ikke ut kommandoene etter hvert som de utføres.
De -S alternativet avbryter effekten av -k alternativ. Dette er ikke nødvendig bortsett fra i en rekursiv makewhere -k kan være arvet fra merket på øverste nivå via MAKEFLAGS eller hvis du angir -k i MAKEFLAGGER i ditt miljø.
De -t alternativet berører filer (merker dem oppdatert uten å endre dem) i stedet for å kjøre kommandoene deres. Dette brukes til å late som om kommandoene ble utført, for å lure fremtidige påkallelser om make.
De -v alternativet skriver ut versjonen av make-programmet pluss en opphavsrett, en liste over forfattere og en melding om at det ikke er noen garanti.
De -w alternativet skriver ut en melding som inneholder arbeidskatalogen før og etter annen behandling. Dette kan være nyttig for å finne feil fra kompliserte reir av rekursive make-kommandoer.
De -W fil alternativet later som måletfilhar blitt endret. Når det brukes med -n flagg, dette viser deg hva som ville skje hvis du skulle endre den filen. Uten -n, er det nesten det samme som å kjøre en ta på kommando på den gitte filen før du kjører make, bortsett fra at endringstiden bare endres i fantasien til make.