Hvorfor er det bedre å kompilere enn å installere fra repositoriene

I denne lille guiden skal jeg forklare (og lære deg) hvorfor det er bedre at du kompilerer et program (si Firefox, Vlc, etc) fra kildekoden enn å laste det ned (fra The Software Center, Yumex, Pacman, etc) og installere.

Først går vi med teorien:

Hva er "kompilere"?

Kompilering transformerer kildekoden (kode skrevet på et bestemt programmeringsspråk, si C, C ++, etc.) til et kjørbart program for dets drift ved å bruke prosessoren til å konvertere språket som brukes til å generere koden til binær og samler . Det kalles også ofte emballasje.

Hvorfor er det bedre å "kompilere"?

Først må du vite følgende for å forstå hvorfor. Sagt på en «rå» måte (enkel, ikke veldig profesjonell osv.), Har hvert løp (Pentium, Core, Atom, etc) og dets art (Intel, AMD, ARM, etc.) prosessorer instruksjoner (programvare skrevet i samler som behandler koden) til modellen sin (Core i7, Core i5, Atom x2, Phantom x8, Arm, etc.) og har også generelle instruksjoner som alle i sitt slag har.

Når du laster ned fra repositoriene gjennom Software Center / apt-get / Yumex / Yum / Pacman / etc, sies et program som installeres automatisk å være dette forhåndskompilert for drift på alle mulige prosessorer (Intel og Amd). Siden det er et forhåndskompilert program, går de instruksjonene som er typiske for den spesifikke prosessormodellen tapt (tenk at hvis et program som Firefox eller Chrome, som har mer enn 7 eller 8 millioner linjer med kode, måtte de legge alle de spesifikke instruksjonene for hver prosessor på markedet, ville mengden kode være så stor at det programmet ikke lenger ville være effektivt) og ikke etterlate seg noe mer enn de generelle av skapermerket (Intel, Amd, Arm).

Når du laster ned, pakker ut og kompilerer kildekoden til et program selv, kompilerer den med de spesifikke instruksjonene til TU prosessor, (som ikke betyr at det ikke vil fungere på en maskin med en annen, bare at den vil være optimalisert spesielt og rent for prosessoren din), og dermed frigjøre og frigjøre all kraften som prosessoren din er i stand til å gi takket være de spesifikke instruksjonene.

I mer tekniske detaljer er disse spesifikke instruksjonene nært knyttet til det som er kjent som brikkesettet til hovedkortet ditt, noe som er den store hodepinen for de av oss som har Intel når vi vil oppgradere prosessoren og hovedkortet.

Du vil bli overrasket over kraften som din amd atom x2 eller du Intel Core på innsiden, 2 Core Duo, i3, etc fra din gamle PC. Nå forstår du hvorfor det er mye snakk i Linux-verdenen om å kompilere den berømte kjernen (hjertet til hvert operativsystem)? Tenk deg hvis du kompilerer et helt system (grafisk miljø (Gnome, Kde, etc), Kernel, ofte brukte programmer (Firefox, Vlc, Chrome, Wine, etc.) spesielt for din pc) all hastigheten og optimaliseringsnivået du ville ha.

Dette kompileringsprinsippet for å få en kode som er optimalisert spesielt for maskinen din, er den som brukes av distroer som Gentoo og derivater (som jeg ikke kommer til å snakke om nå, jeg bruker Fedora minimal med kompilering av Gnome 3, kjernen og andre programmer) der systemet, oppdateringene og programmene dine alltid blir samlet.

Ulemper med kompilering:

Jeg har allerede forklart alle fordelene, men som alt i universet har den en imot.

I samlingssaken er de;

  • Tiden som trengs for dette (Firefox med en i7 4790K (uten overklokk siden jeg er veldig dårlig med spenninger) tar 3 minutter, Gnome Shell (linjen ikke noe annet) med Gnome-Control-Center tok meg ca 2 minutter, begge ble samlet samtidig i Fedora. Men på en maskin med en mindre kraftig prosessor kan denne tiden være uforholdsmessig lang).
  • Prosessoren bruker 100% av kraften med alle kjernene maksimalt, så forbruk og varme skyter i været (ta hensyn til dette hvis du har overklokking eller hvis det er spesielt en bærbar PC), så det er praktisk at du forbereder en kompis eller en kaffe for anledningen.
  • Kanskje du mangler et bibliotek (verktøy) som bruker et program slik at det ikke feiler i samlingen. Generelt har alle distroer pakker eller sett med dem for å unngå dette (de kommer pakket med forskjellige biblioteker og andre ting som gjør at kjernen kan kommunisere ordentlig med prosessoren under prosessen).

Hvordan kan jeg kompilere?

For Debian (Ubuntu, Mint, Elementary, etc, er de alle derivater av dette, så følg dette

Her snakker jeg om å lage et program for normal bruk, ikke en kjerne.

aptitude installere bygg-essensiell dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

Jeg setter debian-policy, men hvis distro ikke er Debian og det gir deg en feil om at det ikke finnes noen slik pakke, er det bare å ignorere det. Jeg må avklare at jeg ikke har brukt disse systemene på lang tid, så hvis en pakke ikke lenger er i lagrene, ikke bekymre deg.

For Fedora:

sudo yum -y installer kernel-headers
kjerneutvikling
sudo yum groupinstall "Utviklingsverktøy"
sudo yum groupinstall "Utviklingsbiblioteker"

Her må jeg be om unnskyldning for de som bruker Arch (jeg kjenner ikke distro godt) og OpenSuse, siden jeg ikke kjenner disse distribusjonene eller de respektive pakkene for å utføre en korrekt kompilering (og jeg har ikke bekreftet hva som er på nettverket, slik at for de to vet jeg ikke om de fungerer).

Nå som du har alle nødvendige krav, trenger du bare å laste ned kildekoden til programmet du vil kompilere, i henhold til utvidelsen pakker du den ut ved hjelp av terminalen (ikke bekymre deg, jeg gir deg kommandoene), og når du går til mappen (alltid med terminalen) gjør du det samme følgende:

Hvis du har muligheten til å konfigurere deg selv til å velge komponenter og andre:

./configure

Så skriver du:

make

Og til slutt for å installere programmet på Linux:

make install

Alt dette alltid med root (su i Fedora, sudo su i Ubuntu og dets derivater (Mint, Elementary Os, etc)

Kommandoer for å pakke ut terminalen (filen pakkes ut i en mappe der filen ligger):

.Tar filer (tjære) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakke | tar cvf file.tar / file / * Pakk ut | tar xvf file.tar Vis innhold | tjære tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tjære med gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakke og glidelås | tar czvf archive.tar.gz / archive / Pakk ut og pakke ut | tar xzvf file.tar.gz Vis innhold (ikke hentet) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimere | gzip -q-fil (Filen komprimerer og omdøper den til "file.gz") Pakk ut gzip -d file.gz (Filen pakker den ut og etterlater den som "fil" Merk: gzip komprimerer bare filer, ikke kataloger
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimere | bzip2-fil | bunzip2-fil (Filen komprimerer og omdøper den til "file.bz2") bzip2 -d file.bz2 | bunzip2 file.bz2 (Filen pakker den ut og etterlater den som "fil") Merk: bzip2 komprimerer bare filer, ikke kataloger
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tjære med bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimere | tar -c filer | bzip2> file.tar.bz2 Unzip | bzip2 -dc file.tar.bz2 | tjære -xv | tar jvxf file.tar.bz2 (nylige versjoner av tar) Vis innhold | bzip2 -dc file.tar.bz2 | tjære -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimere | zip file.zip / mayo / arkiver Pakk ut | pakke ut file.zip Vis innhold | pakke ut -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimere | rar -a file.rar / may / archives Unzip | rar -x file.rar Vis innhold | rar -v file.rar | rar -l file.rar

Og det er alt. Hilsen fra Buenos Aires, Argentina. God ferie og nyttår! :).


Legg til som foretrukket kilde i Google