Šiame mažame vadove aš paaiškinsiu (ir išmokysiu), kodėl geriau sukompiliuoti programą (tarkime, „Firefox“, „Vlc“ ir kt.) Iš jos šaltinio kodo, nei atsisiųsti ją (iš „The Software Center“, „Yumex“, „Pacman“ ir kt.) Ir diegti.
Pirmiausia einame su teorija:
Kas yra „kompiliavimas“?
Kompiliavimas yra pirminio kodo (kodas, parašytas tam tikra programavimo kalba, tarkim, C, C ++ ir kt.), Pavertimas vykdoma programa, skirta jo veikimui naudojant procesorių, norint konvertuoti kodą generuojančią kalbą į dvejetainį ir surinkėją . Tai taip pat dažnai vadinama pakuote.
Kodėl geriau „kompiliuoti“?
Pirmiausia turite žinoti šiuos dalykus, kad suprastumėte, kodėl. Pasakyta „neapdorotai“ (paprastai, nelabai profesionaliai ir t. T.), Kiekviena lenktynė („Pentium“, „Core“, „Atom“ ir kt.) Ir jos rūšys („Intel“, AMD, ARM ir kt.) Su procesoriumi turi instrukcijas (programinė įranga, parašyta surinkėju, kad apdoroja savo modelio kodą) („Core i7“, „Core i5“, „Atom x2“, „Phantom x8“, „Arm“ ir kt.), taip pat turi bendrąsias instrukcijas, kurias turi visos jų rūšys.
Kai atsisiųsite iš saugyklų per programinės įrangos centrą / apt-get / Yumex / Yum / Pacman / etc, sakoma, kad programa, kuri automatiškai įdiegiama, yra tokia iš anksto sudarytas darbui su visais įmanomais procesoriais („Intel“ ir „Amd“). Kadangi tai yra iš anksto sukompiliuota programa, tos konkrečiam procesoriaus modeliui būdingos instrukcijos prarandamos (pagalvokite, kad jei tokia programa kaip „Firefox“ ar „Chrome“, turinti daugiau nei 7 ar 8 milijonus kodo eilučių, kiekvienam iš jų turėjo pateikti visas konkrečias instrukcijas. procesoriaus rinkoje, kodo kiekis būtų toks didelis, kad ta programa nebebūtų efektyvi) nepaliktų nieko kito, kaip tik bendri jos kūrėjų prekės ženklo („Intel“, „Amd“, „Arm“).
Kai pats atsisiųsite, išpakuokite ir sukompiliuosite programos šaltinio kodą, jis bus sudarytas vadovaujantis specialiomis programos instrukcijomis TU procesorius, (tai nereiškia, kad jis neveiks kitame kompiuteryje, tik jis bus optimizuotas specialiai ir tik jūsų procesoriui), taip išlaisvindami ir atlaisvindami visą galią, kurią jūsų procesorius gali suteikti savo specialių instrukcijų dėka.
Daugiau techninės informacijos, šios konkrečios instrukcijos yra glaudžiai susijusios su vadinamuoju jūsų pagrindinės plokštės lustų rinkiniu, o tai kelia didžiulį galvos skausmą tiems iš mūsų, kurie turi „Intel“, kai norime atnaujinti procesorių ir pagrindinę plokštę.
Nustebtum jėga, kurią tavo „Amd Atom x2“ arba jūsų „Intel Core“ viduje, 2 Core Duo ", i3, ir tt iš savo senojo kompiuterio. Dabar suprantate, kodėl „Linux“ pasaulyje daug kalbama apie garsiojo branduolio (kiekvienos operacinės sistemos pagrindas) sukūrimą? Įsivaizduokite, jei sukursite visą sistemą (grafinę aplinką („Gnome“, „Kde“ ir kt.), Branduolį, dažniausiai naudojamas programas („Firefox“, „Vlc“, „Chrome“, „Wine“ ir kt.), Ypač savo asmeniniam kompiuteriui), kokį greitį ir optimizavimo lygį turėtumėte.
Šis kompiliavimo principas, skirtas gauti kodą, optimizuotą jūsų mašinai, yra toks, kurį naudoja tokie distros kaip „Gentoo“ ir jų derivatai (apie kuriuos dabar nekalbėsiu, naudoju „Fedora minimal“ kompiliuojant „Gnome 3“, branduolį ir kitas programas), kur sistema , visada atnaujinami jūsų naujiniai ir programos.
Kompiliavimo minusai:
Aš jau paaiškinau visus pranašumus, bet kaip ir viskas visatoje, prieš ką jis turi.
Kompiliavimo atveju jie yra;
- Tam reikalingas laikas („Firefox“ su „i7 4790K“ (be įsijungimo, nes man labai blogai su įtampa) trunka 3 minutes, „Gnome Shell“ (juosta nieko kito) su „Gnome-Control-Center“ užtruko apie 2 minutes, abu kompiliuojami tuo pačiu metu Fedoroje. Bet mašinoje su mažiau galingu procesoriumi šis laikas gali būti neproporcingai ilgas).
- Procesorius maksimaliai išnaudoja 100% galios su visomis savo šerdimis, todėl sunaudojimas ir šiluma pakyla į viršų (atsižvelkite į tai, jei turite greičio viršijimą arba jei tai ypač nešiojamas kompiuteris), todėl patogu paruošti porą ar kavos ta proga.
- Galbūt jums trūksta bibliotekos (įrankio), kurioje būtų naudojama programa, kad kompiliuojant ji neklystų. Apskritai, visi distrai turi paketus ar jų rinkinius, kad to išvengtų (jie yra supakuoti su įvairiomis bibliotekomis ir kitais dalykais, leidžiančiais branduoliui proceso metu bendrauti taip, kaip turėtų).
Kaip galiu sudaryti?
Čia aš kalbu apie ne branduolio, o normalaus naudojimo programos sukūrimą.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Aš įdėjau „debian-policy“, bet jei jūsų platintojas nėra „Debian“ ir tai suteikia klaidą, kad tokio paketo nėra, tiesiog nepaisykite jo. Turiu patikslinti, kad ilgą laiką nenaudojau šių sistemų, taigi, jei paketo nebėra saugyklose, nekelkite problemų.
„Fedora“:
sudo yum -y įdiegti branduolio antraštesbranduolys-develsudo yum groupinstall "Kūrimo įrankiai"sudo yum groupinstall „Kūrimo bibliotekos“
Čia turiu atsiprašyti tų, kurie naudojasi „Arch“ (aš gerai nepažįstu distro) ir „OpenSuse“, nes aš nepažįstu šių platintojų ar atitinkamų paketų, kad atlikčiau teisingą kompiliavimą (ir aš nepatvirtinau to, kas yra tinkle, taigi kad tiems dviem aš nežinau, ar jie veikia).
Dabar, kai turite visus būtinus reikalavimus, turite atsisiųsti tik programos, kurią norite kompiliuoti, šaltinio kodą, priklausomai nuo plėtinio, kurį jį išpakavote naudodami terminalą (nesijaudinkite, paliksiu jums komandas), o kai einate į aplanką (visada su terminalu), darote tą patį taip:
Jei turite galimybę sukonfigūruoti pasirinkti komponentus ir kitus:
./configure
Tada rašote:
make
Galiausiai, jei norite įdiegti programą savo „Linux“:
make install
Komandos išpakuoti naudojant terminalą (failas išpakuojamas aplanke, kuriame yra failas):
.Degalinės failai (derva) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakuotė | tar cvf file.tar / file / * Išpakuoti | tar xvf file.tar Peržiūrėti turinį | derva tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (degutas su gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakuotė ir užtrauktukas | tar czvf file.tar.gz / file / Išpakuokite ir išpakuokite | tar xzvf file.tar.gz Žiūrėti turinį (neišgautas) | dervos tzvf failas.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suspausti | gzip -q failas (Failas suglaudina ir pervadina jį į "file.gz") Išpakuokite | gzip -d file.gz (Failas išpakuoja jį ir palieka jį kaip „failą“. Pastaba: „gzip“ suglaudina tik failus, o ne katalogus.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suspausti | bzip2 failas | bunzip2 failas (Failas suglaudina ir pervadina jį į "file.bz2"). Išpakuokite | bzip2 -d failas.bz2 | bunzip2 file.bz2 (failas išpakuoja jį ir palieka jį kaip „failą“) Pastaba: „bzip2“ glaudina tik failus, o ne katalogus
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (degutas su bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suspausti | tar -c failai | bzip2> file.tar.bz2 Išpakuokite | bzip2 -dc failas.tar.bz2 | degutas -xv | tar jvxf file.tar.bz2 (naujausios dervos versijos) Peržiūrėti turinį | bzip2 -dc failas.tar.bz2 | degutas -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suspausti | zip file.zip / mayo / archives Išpakuokite | išpakuoti file.zip Peržiūrėti turinį | išpakuokite -v failą.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - / - - - - - - - -. - retas - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - suspausti | rar -a file.rar / may / archives Išpakuoti | rar -x file.rar Peržiūrėti turinį | rar -v failas.rar | rar -l failas.rar
Ir viskas. Sveikinimai iš Buenos Airių, Argentinos. Gražių švenčių ir naujųjų metų! :).