I denne lille guide vil jeg forklare (og lære dig) hvorfor det er bedre, at du kompilerer et program (f.eks. Firefox, Vlc osv.) Ud fra dets kildekode end at downloade det (fra The Software Center, Yumex, Pacman osv.) Og installere.
Først går vi med teorien:
Hvad er "kompilering"?
Kompilering omdanner kildekoden (kode skrevet på et bestemt programmeringssprog, siger C, C ++ osv.) Til et eksekverbart program til dets drift ved hjælp af processoren til at konvertere det sprog, der bruges til at generere koden til binær og samler . Det kaldes også ofte emballage.
Hvorfor er det bedre at "kompilere"?
Først skal du vide følgende for at forstå hvorfor. Sagt på en "rå" måde (enkel, ikke særlig professionel osv.), Har hver race (Pentium, Core, Atom osv.) Og dens art (Intel, AMD, ARM osv.) Af processoren instruktioner (software skrevet i samler, der behandler koden) for deres model (Core i7, Core i5, Atom x2, Phantom x8, Arm osv.) og har også generelle instruktioner, som alle af deres slags har.
Når du downloader et program fra arkiverne via Software Center (f.eks. apt-get/Yumex/Yum/Pacman/osv.), installeres det automatisk og siges at være prækompileret til at køre på alle mulige processorer (Intel og AMD). Fordi det er et prækompileret program, mister det de instruktioner, der er specifikke for den pågældende processormodel (forestil dig, at et program som Firefox eller Chrome, der har over 7 eller 8 millioner linjer kode, skulle inkludere alle de specifikke instruktioner for hver processor på markedet; mængden af kode ville være så stor, at programmet ikke længere ville være effektivt), og kun bevare de generelle instruktioner fra sin skaber (Intel, AMD, ARM).
Når du selv downloader, dekomprimerer og kompilerer kildekoden til et program, kompileres det med de specifikke instruktioner fra DIN processor ( hvilket ikke betyder, at det ikke vil virke på en maskine med en anden processor, kun at det vil blive optimeret specifikt og udelukkende til din processor) , hvilket frigør al den kraft, som din processor er i stand til at give takket være dens specifikke instruktioner.
I mere tekniske detaljer er disse specifikke instruktioner tæt knyttet til det, der kaldes chipsættet på dit bundkort, hvilket er den store hovedpine for dem af os, der har Intel, når vi vil opgradere processoren og bundkortet.
Du ville blive overrasket over den kraft, som din gamle pc's AMD Atom x2 eller Intel Core i3 , Core 2 Duo eller andre processorer kan levere . Nu forstår du, hvorfor kompilering af den berømte kerne (hjertet i ethvert operativsystem) er så meget snak i Linux-verdenen? Forestil dig, hvis du kunne kompilere et helt system specifikt til din pc (grafisk miljø (GNOME, KDE osv.), kerne, almindeligt anvendte programmer (Firefox, VLC, Chrome, Wine osv.)) - det niveau af hastighed og optimering, du ville få.
Dette kompileringsprincip for at opnå en kode, der er optimeret specielt til din maskine, er den, der bruges af distroer som Gentoo og derivater (som jeg ikke vil tale om nu, jeg bruger Fedora minimal med kompilering af Gnome 3, kernen og andre programmer) hvor systemet , dine opdateringer og dine programmer er altid samlet.
Ulemper ved kompilering:
Jeg har allerede forklaret alle fordelene, men som alt i universet har det en imod.
I kompilationssagen er de det;
- Den nødvendige tid til dette (Firefox med en i7 4790K (uden overclock, da jeg er meget dårlig med spændinger) tager 3 minutter, Gnome Shell (bjælken intet mere) med Gnome-Control-Center tog mig cirka 2 minutter, begge blev samlet på samme tid i Fedora. Men på en maskine med en mindre kraftig processor kan denne tid være uforholdsmæssigt lang).
- Processoren bruger 100% af sin effekt med alle kernerne maksimalt, så forbrug og varme skyrocket (tag dette i betragtning, hvis du har overclocking, eller hvis det især er en notesbog), så det er praktisk, at du forbereder en kompis eller en kop kaffe til lejligheden.
- Måske mangler du et bibliotek (værktøj), der bruger et program, så det ikke fejler i kompileringen. Generelt har alle distroer pakker eller sæt af dem for at undgå dette (de kommer pakket med forskellige biblioteker og andre ting, der gør det muligt for kernen at kommunikere som den skal med processoren under processen).
Hvordan kan jeg kompilere?
Her taler jeg om at sammensætte et program til normal brug, ikke en kerne.
aptitude installere build-essentiel dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Jeg sætter debian-policy, men hvis din distro ikke er Debian, og det giver dig en fejl, at der ikke findes en sådan pakke, skal du bare ignorere den. Jeg er nødt til at præcisere, at jeg ikke har brugt disse systemer i lang tid, så hvis en pakke ikke længere er i arkiverne, skal du ikke lave et problem.
For Fedora:
sudo yum -y installer kernel-headerskerneudviklingsudo yum groupinstall "Udviklingsværktøjer"sudo yum groupinstall "Udviklingsbiblioteker"
Her er jeg nødt til at undskylde dem, der bruger Arch (jeg kender ikke distro godt) og OpenSuse, da jeg ikke kender disse distroer eller de respektive pakker til at udføre en korrekt kompilering (og jeg har ikke bekræftet, hvad der er på netværket, så at for de to ved jeg ikke, om de fungerer).
Nu hvor du har alle de nødvendige krav, behøver du kun downloade kildekoden til det program, du vil kompilere, afhængigt af udvidelsen, du pakker den ud ved hjælp af terminalen (rolig, jeg giver dig kommandoerne), og når du går til mappen (altid med terminalen) gør du det samme følge:
Hvis du har mulighed for at konfigurere dig selv til at vælge komponenterne og andre:
./configure
Så skriver du:
make
Og endelig for at installere programmet på din linux:
make install
Kommandoer til at pakke ud ved hjælp af terminalen (filen pakkes ud i en mappe, hvor filen er placeret):
.Tar-filer (tjære) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakke | tar cvf file.tar / file / * Udpak | tar xvf file.tar Se indhold | tjære tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tjære med gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pakke og lynlås | tar czvf file.tar.gz / file / Udpak og udpak | tar xzvf file.tar.gz Se indhold (ikke udpakket) | tar tzvf-fil.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimering | gzip -q fil (Filen komprimerer og omdøber den til "file.gz") Unzip | gzip -d-fil.gz (Filen pakker den ud og efterlader den som "fil" Bemærk: gzip komprimerer kun filer, ikke mapper
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimering | bzip2-fil | bunzip2-fil (Filen komprimerer og omdøber den til "file.bz2") Unzip | bzip2 -d fil.bz2 | bunzip2 file.bz2 (Filen pakker den ud og efterlader den som "fil") Bemærk: bzip2 komprimerer kun filer, ikke mapper
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tjære med bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimering | tar -c filer | bzip2> file.tar.bz2 Unzip | bzip2 -dc-fil.tar.bz2 | tjære -xv | tar jvxf file.tar.bz2 (nyere versioner af tar) Se indhold | bzip2 -dc-fil.tar.bz2 | tjære -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimering | zip file.zip / mayo / arkiver Unzip | unzip file.zip Se indhold | unzip -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Komprimering | rar -a file.rar / may / archives Unzip | rar -x file.rar Se indhold | rar -v file.rar | rar -l file.rar
Og det er alt. Hilsen fra Buenos Aires, Argentina. God jul og nytår! :).