In questa piccola guida ti spiegherò (e ti insegnerò) perché è meglio che compili un programma (diciamo Firefox, Vlc, ecc.) Dal suo codice sorgente, piuttosto che scaricarlo (da The Software Center, Yumex, Pacman, ecc.) ) e installa.
Per prima cosa andiamo con la teoria:
Cos'è "compilare"?
Compilare è trasformare il codice sorgente (codice scritto in un certo linguaggio di programmazione, diciamo C, C ++, ecc.) In un programma eseguibile per il suo funzionamento attraverso l'uso del processore per convertire il linguaggio utilizzato per generare il codice in binario e assemblatore. Viene spesso chiamato anche packaging.
Perché è meglio "compilare"?
Per prima cosa devi sapere quanto segue per capire perché. Detto in modo «crudo» (semplice, poco professionale, ecc.), Ogni razza (Pentium, Core, Atom, ecc.) E le sue specie (Intel, AMD, ARM, ecc.) Di processore hanno istruzioni (software scritto in assembler che elabora il codice) del loro modello (Core i7, Core i5, Atom x2, Phantom x8, Arm, ecc.) e hanno anche istruzioni generali che tutti nel loro genere hanno.
Quando scarichi dai repository tramite Software Center / apt-get / Yumex / Yum / Pacman / ecc, un programma che si installa automaticamente dice che questo precompilato per il funzionamento su tutti i possibili processori (Intel e Amd). Trattandosi di un programma precompilato, si perdono quelle istruzioni tipiche di quello specifico modello di processore (si pensi che se un programma come Firefox o Chrome, che ha più di 7 o 8 milioni di righe di codice, doveva mettere tutte le istruzioni specifiche per ciascuno processore sul mercato, la quantità di codice sarebbe così grande che quel programma non sarebbe più efficiente) non lasciando altro che quelli generali del suo marchio creatore (Intel, Amd, Arm).
Quando scarichi, decomprimi e compili tu stesso il codice sorgente di un programma, questo si compila con le istruzioni specifiche di TU processore, (il che non significa che non funzionerà su una macchina con una diversa, solo che sarà ottimizzato specificamente e esclusivamente per il tuo processore), scatenando e liberando così tutta la potenza che il tuo processore è in grado di dare grazie alle sue specifiche istruzioni.
Nei dettagli più tecnici, queste istruzioni specifiche sono strettamente legate a quello che è noto come il chipset della scheda madre, che è il grande mal di testa per quelli di noi che hanno Intel quando vogliamo aggiornare il processore e la scheda madre.
Saresti sorpreso dal potere che il tuo amd atomo x2 o tu Intel Core all'interno, 2 Core Duo, i3, ecc. dal vecchio PC. Ora capisci perché nel mondo Linux si parla molto di compilare il famoso Kernel (cuore di ogni sistema operativo)? Immagina di compilare un intero sistema (ambiente grafico (Gnome, Kde, ecc.), Kernel, programmi di uso comune (Firefox, Vlc, Chrome, Wine, ecc.) Soprattutto per il tuo PC) tutta la velocità e il livello di ottimizzazione che avresti.
Questo principio di compilazione per ottenere un codice ottimizzato specialmente per la tua macchina è quello usato da distribuzioni come Gentoo e derivati (di cui non parlerò ora, uso Fedora minimal con la compilazione di Gnome 3, il kernel e altri programmi) dove vengono sempre compilati il sistema, i tuoi aggiornamenti ei tuoi programmi.
Contro della compilazione:
Ho già spiegato tutti i vantaggi, ma come ogni cosa nell'universo ne ha uno contro.
Nel caso della compilazione lo sono;
- Il tempo necessario per questo (Firefox con un i7 4790K (senza overclock dato che sono pessimo con le tensioni) impiega 3 minuti, Gnome Shell (la barra niente di più) con Gnome-Control-Center mi ha impiegato circa 2 minuti, entrambi compilati a lo stesso tempo in Fedora. Ma su una macchina con un processore meno potente questa volta può essere sproporzionatamente lungo).
- Il processore utilizza il 100% della sua potenza con tutti i suoi core al massimo, quindi consumi e calore salgono alle stelle (tienilo in considerazione se hai overclock o se è soprattutto un notebook), quindi è conveniente che prepari un mate o un caffè per l'occasione.
- Forse ti manca una libreria (strumento) che utilizza un programma in modo che non commetta errori nella compilazione. In generale, tutte le distribuzioni hanno pacchetti o set di esse per evitarlo (sono piene di varie librerie e altre cose che consentono al kernel di comunicare come dovrebbe con il processore durante il processo).
Come posso compilare?
Qui sto parlando di compilare un programma per uso normale, non un kernel.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Ho messo debian-policy, ma se la tua distribuzione non è Debian e ti dà un errore che non esiste un tale pacchetto, ignoralo. Devo chiarire che non uso questi sistemi da molto tempo, quindi se un pacchetto non è più nei repository, non creare problemi.
Per Fedora:
sudo yum -y installa gli header del kernelsviluppo del kernelsudo yum groupinstall "Strumenti di sviluppo"sudo yum groupinstall "Librerie di sviluppo"
Qui mi devo scusare per chi usa Arch (non conosco bene la distro) e OpenSuse, dato che non conosco queste distribuzioni oi rispettivi pacchetti per eseguire una corretta compilazione (e non ho corroborato cosa c'è in rete, quindi per quei due non so se funzionano).
Ora che hai tutti i requisiti necessari, devi solo scaricare il codice sorgente del programma che vuoi compilare, a seconda dell'estensione lo decomprimi usando il terminale (non preoccuparti, ti lascio i comandi) e quando vai nella cartella (sempre con il terminale) fai la stessa cosa:
Se hai la possibilità di configurarti per scegliere i componenti e altri:
./configure
Quindi digiti:
make
E infine per installare il programma sul tuo linux:
make install
Comandi per decomprimere utilizzando il terminale (il file viene decompresso in una cartella in cui si trova il file):
.Tar files (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pack | tar cvf file.tar / file / * Unpack | tar xvf file.tar Visualizza contenuto | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar con gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Confezione e zip | tar czvf file.tar.gz / file / Unpack and unzip | tar xzvf file.tar.gz Visualizza contenuto (non estratto) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimi | gzip -q file (Il file lo comprime e lo rinomina "file.gz") Unzip | gzip -d file.gz (Il file lo decomprime e lo lascia come "file" Nota: gzip comprime solo i file, non le directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimi | bzip2 file | bunzip2 file (Il file lo comprime e lo rinomina "file.bz2") Unzip | bzip2 -d file.bz2 | bunzip2 file.bz2 (Il file lo decomprime e lo lascia come "file") Nota: bzip2 comprime solo i file, non le directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar con bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimi | file tar -c | bzip2> file.tar.bz2 Decomprimi | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (versioni recenti di tar) Visualizza contenuto | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimi | zip file.zip / mayo / archives Unzip | unzip file.zip Visualizza contenuto | decomprimere -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimi | rar -a file.rar / may / archives Unzip | rar -x file.rar Visualizza contenuto | rar -v file.rar | rar -l file.rar
E questo è tutto. Saluti da Buenos Aires, Argentina. Buone Feste e Capodanno! :).