De ce este mai bine să compilați decât să instalați din depozite

În acest mic ghid, vă voi explica (și vă voi învăța) de ce este mai bine să compilați un program (să zicem Firefox, Vlc etc.) din codul sursă al acestuia, decât să îl descărcați (din The Software Center, Yumex, Pacman etc.) și instalare.

Mai întâi mergem cu teoria:

Ce este „compila”?

Compilarea transformă codul sursă (cod scris într-un anumit limbaj de programare, să spunem C, C ++ etc.) într-un program executabil pentru funcționarea acestuia prin utilizarea procesorului pentru a converti limbajul utilizat pentru a genera codul în binar și asamblator . Se mai numește adesea ambalare.

De ce este mai bine să „compilați”?

Mai întâi trebuie să știți următoarele pentru a înțelege de ce. Spuse într-un mod „grosolan” (simplu, nu foarte profesionist etc.), fiecare rasă (Pentium, Core, Atom etc.) și speciile sale (Intel, AMD, ARM etc.) de procesor au instrucțiuni (software scris în asamblare care procesează codul) modelului lor (Core i7, Core i5, Atom x2, Phantom x8, Arm etc.) și au, de asemenea, instrucțiuni generale pe care le au toate de genul lor.

Când descărcați din depozite prin intermediul Centrului software / apt-get / Yumex / Yum / Pacman / etc, un program care se instalează spune automat că precompiled pentru funcționare pe toate procesoarele posibile (Intel și Amd). Deoarece este un program precompilat, acele instrucțiuni tipice acelui model de procesor specific se pierd (gândiți-vă că, dacă un program precum Firefox sau Chrome, care are mai mult de 7 sau 8 milioane de linii de cod, ar trebui să pună toate instrucțiunile specifice pentru fiecare procesor de pe piață, cantitatea de cod ar fi atât de mare încât programul respectiv nu ar mai fi eficient) lăsând nimic mai mult decât cele generale ale brandului său de creatori (Intel, Amd, Arm).

Când descărcați, dezarhivați și compilați singur codul sursă al unui program, acesta se compilează cu instrucțiunile specifice din TU procesor, (ceea ce nu înseamnă că nu va funcționa pe o mașină cu una diferită, ci doar că va fi optimizată în mod specific și pur pentru procesorul dvs.), dezlănțuind astfel și eliberând toată puterea pe care procesorul dvs. este capabilă să o mulțumească instrucțiunilor sale specifice.

În detalii mai tehnice, aceste instrucțiuni specifice sunt strâns legate de ceea ce este cunoscut sub numele de chipset-ul plăcii dvs. de bază, care este durerea de cap extraordinară pentru cei dintre noi care avem Intel atunci când dorim să actualizăm procesorul și placa de bază.

Ați fi surprins de puterea pe care o aveți amd atom x2 sau tu Intel Core Inside, Core Duo 2, i3, etc de pe vechiul computer. Acum înțelegeți de ce se vorbește mult în lumea Linux despre compilarea faimosului Kernel (inima fiecărui sistem de operare)? Imaginați-vă dacă compilați un întreg sistem (mediu grafic (Gnome, Kde etc.), Kernel, programe utilizate în mod obișnuit (Firefox, Vlc, Chrome, Wine etc.) în special pentru computerul dvs.) toată viteza și nivelul de optimizare pe care le-ați avea.

Acest principiu de compilare pentru a obține un cod optimizat special pentru mașina dvs. este cel folosit de distribuții precum Gentoo și derivate (despre care nu am de gând să vorbesc acum, folosesc Fedora minimal cu compilarea Gnome 3, kernel și alte programe) în care sistemul , actualizările și programele dvs. sunt întotdeauna compilate.

Contra compilației:

Am explicat deja toate avantajele, dar, ca tot ce există în univers, are unul împotriva.

În cazul compilației sunt;

  • Timpul necesar pentru asta (Firefox cu un i7 4790K (fără overclock deoarece sunt foarte prost cu tensiunile) durează 3 minute, Gnome Shell (bara nimic altceva) cu Gnome-Control-Center mi-a luat aproximativ 2 minute, ambele fiind compilate în același timp în Fedora. Dar pe o mașină cu un procesor mai puțin puternic de data aceasta poate fi disproporționat de lungă).
  • Procesorul folosește 100% din puterea sa cu toate nucleele sale la maxim, astfel consumul și căldura cresc (ține cont de asta dacă ai overclocking sau dacă este mai ales un notebook), deci este convenabil să pregătești un mate sau o cafea pentru ocazie.
  • Poate că vă lipsește o bibliotecă (instrument) care utilizează un program, astfel încât să nu greșească în compilație. În general, toate distribuțiile au pachete sau seturi de ele pentru a evita acest lucru (sunt împachetate cu diverse biblioteci și alte lucruri care permit nucleului să comunice așa cum ar trebui cu procesorul în timpul procesului).

Cum pot compila?

Pentru Debian (Ubuntu, Mint, Elementary, etc, toate acestea sunt derivate din acest lucru, așa că urmați acest lucru

Aici vorbesc despre compilarea unui program pentru utilizare normală, nu a unui nucleu.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

Am pus debian-policy, dar dacă distribuția dvs. nu este Debian și vă oferă o eroare că nu există un astfel de pachet, pur și simplu ignorați-l. Trebuie să clarific că nu am folosit aceste sisteme de mult timp, așa că dacă un pachet nu mai este în depozite, nu puneți probleme.

Pentru Fedora:

sudo yum -y instalează kernel-headers
dezvoltarea nucleului
sudo yum groupinstall "Instrumente de dezvoltare"
sudo yum groupinstall "Biblioteci de dezvoltare"

Aici trebuie să-mi cer scuze pentru cei care folosesc Arch (nu cunosc distro bine) și OpenSuse, deoarece nu cunosc aceste distribuții sau pachetele respective pentru a efectua o compilare corectă (și nu am coroborat ceea ce este în rețea, deci că pentru acei doi nu știu dacă funcționează).

Acum, că aveți toate cerințele necesare, trebuie doar să descărcați codul sursă al programului pe care doriți să-l compilați, în funcție de extensia, îl dezarhivați folosind terminalul (nu vă faceți griji, vă voi lăsa comenzile) și când mergeți în dosar (întotdeauna cu terminalul) faceți același lucru ca urmare a:

Dacă aveți posibilitatea să vă configurați pentru a alege componentele și altele:

./configure

Apoi tastați:

make

Și, în cele din urmă, pentru a instala programul pe Linux:

make install

Toate acestea întotdeauna cu root (su în Fedora, sudo su în Ubuntu și derivatele sale (Mint, Elementary Os etc.)

Comandă dezarhivarea utilizând terminalul (fișierul este dezarhivat într-un folder în care se află fișierul):

.Tar fișiere (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pack | tar cvf file.tar / file / * Despachetați | tar xvf file.tar Vizualizați conținutul | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar cu gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pack and zip | tar czvf archive.tar.gz / archive / Unpack and unzip | tar xzvf file.tar.gz Vizualizați conținutul (nu este extras) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimare | fișier gzip -q (Fișierul îl comprimă și îl redenumește „fișier.gz”) Unzip | gzip -d file.gz (Fișierul îl dezarhivează și îl lasă ca „fișier” Notă: gzip comprimă doar fișiere, nu directoare
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimare | fișier bzip2 | fișier bunzip2 (Fișierul îl comprimă și îl redenumește „fișier.bz2”) Unzip | bzip2 -d fișier.bz2 | bunzip2 file.bz2 (Fișierul îl dezarhivează și îl lasă ca „fișier”) Notă: bzip2 comprimă doar fișiere, nu directoare
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (gudron cu bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimare | fișierele tar -c | bzip2> file.tar.bz2 Unzip | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (versiuni recente ale tar) Vizualizați conținutul | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimare | zip file.zip / mayo / archives Unzip | dezarhivați fișierul .zip Vizualizați conținutul | dezarhivați -v fișierul.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimare | rar -a file.rar / may / archives Unzip | rar -x fișier.rar Vizualizați conținutul | rar -v fișier.rar | rar -l fișier.rar

Și asta e tot. Salutări din Buenos Aires, Argentina. Sarbatori fericite si Anul Nou! :).


Adăugați ca sursă preferată în Google