Izpratne par Unix un Linux komandu: make

Utilīta make automātiski nosaka, kuras lielas programmas daļas ir jāpārkompilē, un izdod komandas to pārkompilēt. Rokasgrāmatā ir aprakstīta GNU make ieviešana, ko uzrakstīja Ričards Stallmens un Rolands Makgrats.

Make utilīta neaprobežojas tikai ar programmām. Varat to izmantot, lai aprakstītu jebkuru uzdevumu, kurā daži faili ir automātiski jāatjaunina no citiem, kad citi faili tiek mainīti. Komanda make visbiežāk tiek izmantota kopējā procesā, lai izveidotu programmatūru no avota koda.

vīrietis izmanto klēpjdatoru
lina aidukaite/Moment/Getty Images

Kā lietot komandu Make operētājsistēmā Linux

Šis ir izplatīts piemērs, kā izmantot komandu make operētājsistēmā Linux. Parasti tā ir daļa no vienkārša trīs soļu procesa, lai izveidotu atvērtā pirmkoda lietotnes no to pirmkoda.

Šie piemēri parāda C programmas jo tie ir visizplatītākie, taču jūs varat izmantot make ar jebkuru programmēšanas valodu, kas var palaist kompilatoru ar čaulas komandu.

  1. Instalējiet Git, ja jums tā nav, kopā ar programmatūras veidošanas rīkiem.

    apt install git build-essential
  2. Izvēlieties lietotni, ar kuru strādāt, vai lejupielādējiet VLC.

    apt build-dep vlc
  3. Klonējiet VLC avota kodu.

    git klons https://github.com/videolan/vlc.git
  4. Mainiet direktorijus uz klonēto VLC avota kodu un palaidiet konfigurācijas skriptu.

    CD vlc
    ./bootstrap
    ./configure
  5. Palaidiet veidot komandu kopā ar -j karodziņu, kam seko jūsu sistēmā esošo CPU kodolu/pavedienu skaits.

    padarīt -j4
  6. Tas prasīs kādu laiku, lai to pabeigtu. Kad tas ir izdarīts, instalējiet lietotni ar veikt uzstādīšanu.

    sudo make install
  7. Jūs esat pabeidzis.

Visbiežāk šādi tiks izmantota komanda make. Var būt sarežģītākas procedūras par šo vai nelielas atšķirības, taču tās nekad nav pārāk sarežģītas.

Kā GNU liek komandai darboties?

Tālāk esošajā sadaļā ir sniegts komandas make tehniskais sadalījums. Ja vēlaties izmantot visas iespējas, skatiet tālāk norādītās iespējas.

Šī lapa ir GNU make dokumentācijas izraksts. Tas tiek atjaunināts tikai reizēm, jo ​​GNU projekts neizmanto nroff. Pilnīgu, aktuālo dokumentāciju skatiet informācijas failā make.info kas ir izveidots no Texinfo avota faila make.texinfo.

Make Utility sintakse un sagatavošana

Lietderības make sintakse ir veidot -fmakefile ] [ opciju ]... mērķis...

Lai sagatavotos lietošanai make, jums ir jāuzraksta fails ar nosaukumu the makefile kas apraksta attiecības starp failiem jūsu programmā un norāda komandas katra faila atjaunināšanai. Parasti an izpildāmais fails tiek atjaunināts no objektu failiem, kas savukārt tiek veidoti, kompilējot avota failus.

Tiklīdz ir izveidots piemērots makefile, katru reizi, kad maināt dažus avota failus, čaulas komanda veidot pietiek, lai veiktu visas nepieciešamās pārkompilācijas. Make programma izmanto makefile datubāzi un failu pēdējo modifikāciju laiku, lai izlemtu, kuri faili ir jāatjaunina. Katram no šiem failiem tas izdod datu bāzē ierakstītās komandas.

Lietderība make izpilda komandas makefile, lai atjauninātu vienu vai vairākus mērķa nosaukumus, kur nosaukums parasti ir programma. Ja nē -f opcija ir pieejama, meklējiet makefailus GNUmakefile, makefile, un Makefile, tādā secībā.

Parasti jums vajadzētu arī izsaukt makefile makefile vai Makefile. (Ieteicams izmantot Makefile, jo tas ir labi redzams direktoriju saraksta sākumā, blakus citiem svarīgiem failiem, piemēram, README.) Lielākajai daļai lietotāju nav ieteicams izvēlēties pirmo vārdu GNUmakefile makefaili. Izmantojiet šo nosaukumu tikai tad, ja makefile ir specifiska GNU markai un to nesapratīs citas make-versijas. Ja makefile ir -, tiek nolasīta standarta ievade.

The veidot utilīta atjaunina mērķi, ja tas ir atkarīgs no priekšnosacījumu failiem, kas ir mainīti kopš mērķa pēdējās modifikācijas, vai ja mērķis neeksistē.

Make Utility opcijas

The -b un -m opcijas tiek ignorētas, lai nodrošinātu saderību ar citām markas versijām.

-C rež izmaiņas uz direktoriju rež pirms lasāt makefilus vai darāt kaut ko citu. Ja vairākas -C opcijas ir norādītas, katra tiek interpretēta attiecībā pret iepriekšējo: -C -C utt ir līdzvērtīgs -C / utt. To parasti izmanto ar rekursīviem make izsaukumiem.

The -d opcija papildus parastajai apstrādei izdrukā atkļūdošanas informāciju. Atkļūdošanas informācija norāda, kuri faili tiek apsvērti pārtaisīšanai, kuri failu laiki tiek salīdzināti un ar kādiem rezultātiem, kuri faili ir jāpārveido un kuri netiešie noteikumi tiek ņemti vērā un kuri ir piemērots.

The -e opcija dod no vides ņemtajiem mainīgajiem prioritāti pār mainīgajiem no makefiles.

The -f failuopciju lietojumi failu kā makefile.

The -i opcija ignorē visas kļūdas komandās, kas izpildītas, lai pārtaisītu failus.

The -Es režopcija norāda direktoriju rež lai meklētu iekļautos makefailus. Ja vairāki -es opcijas tiek izmantotas, lai norādītu vairākus direktorijus, katalogi tiek meklēti norādītajā secībā. Atšķirībā no argumentiem citiem markas karodziņiem, katalogi ar -Es karogi var būt tieši aiz karoga: -Idir ir atļauts, kā arī -I rež. Šī sintakse ir atļauta saderībai ar C priekšprocesoru -Es karogs.

The -j darbavietas opcija norāda darba vietu skaits (komandas), lai palaistu vienlaicīgi. Ja ir vairāk nekā viens -j variants, pēdējais ir efektīvs. Ja -j opcija tiek dota bez argumenta, make neierobežo vienlaikus palaižamo darbu skaitu.

The -k opcija turpinās, cik vien iespējams pēc kļūdas. Mērķi, kas neizdevās, un tos, kas no tā ir atkarīgi, nevar pārtaisīt. Tomēr pārējās šo mērķu atkarības var apstrādāt vienādi.

The -l un -I slodze opcijas norāda, ka nevajadzētu sākt jaunus darbus (komandas), ja darbojas citi darbi un vidējā slodze ir vismaz slodze (peldošā komata skaitlis). Bez argumentiem tiek noņemts iepriekšējais slodzes ierobežojums.

The -n opcija izdrukā komandas, kas tiktu izpildītas, bet neizpilda tās.

The -o failuopcija nepārtaisa failu pat ja tas ir vecāks par tā atkarībām un neko nepārveido, ņemot vērā izmaiņasfailu. Būtībā fails tiek uzskatīts par vecu, un tā noteikumi tiek ignorēti.

The -lpp opcija izdrukā datu bāzi (kārtulas un mainīgās vērtības), kas rodas makefailu lasīšanas rezultātā. Pēc tam tas tiek izpildīts kā parasti vai kā citādi norādīts. Tas arī izdrukā versijas informāciju, ko sniedz -v slēdzis (skatīt zemāk). Lai izdrukātu datubāzi, nemēģinot pārtaisīt failus, izmantojiet veidot-lpp-f/dev/null.

The -q opcija iestata jautājumu režīmu. Tas nepalaiž nekādas komandas un neko nedrukā. Tas atgriež izejas statusu, kas ir nulle, ja norādītie mērķi ir atjaunināti, vai nulle citā gadījumā.

The -r opcija novērš iebūvēto netiešo noteikumu izmantošanu. Tas arī notīra sufiksu kārtulu noklusējuma sufiksu sarakstu.

The -s opcija apklusina darbību. Tas nedrukā komandas, kad tās tiek izpildītas.

The -S opcija atceļ efektu -k opciju. Tas nav nepieciešams, izņemot rekursīvā makewhere gadījumā -k var tikt mantota no augstākā līmeņa ražotāja, izmantojot MAKEFLAGS vai ja iestatāt -k MAKEFLAGS savā vidē.

The -t opcija pieskaras failiem (atzīmē tos atjauninātus, nemainot tos), nevis izpilda to komandas. To izmanto, lai izliktos, ka komandas ir izpildītas, lai apmānītu turpmākos izsaukumus.

The -v opcija izdrukā make programmas versiju, kā arī autortiesības, autoru sarakstu un paziņojumu, ka garantijas nav.

The -w opcija izdrukā ziņojumu ar darba direktoriju pirms un pēc citas apstrādes. Tas var būt noderīgi, lai atrastu kļūdas no sarežģītām rekursīvo komandu ligzdām.

The -W failu opcija izliekas, ka mērķisfailuir modificēts. Lietojot kopā ar -n karodziņš, tas parāda, kas notiktu, ja modificētu šo failu. Bez -n, tas ir gandrīz tas pats, kas palaist a pieskarties komandu dotajā failā pirms make palaišanas, izņemot to, ka modifikācijas laiks tiek mainīts tikai make iztēlē.