La compilazione è uno scoglio non da poco per chi si avvicina al mondo di Linux, in questo articolo illustrerò le linee guida per la compilazione di un sorgente generico e un’applicazione Kde.
Introduzione:
Pro: i vantaggi derivanti dalla compilazione di un sorgente sono principalmente prestazionali, grazie alla compilazione il software viene “adattato” all’hardware presente sulla macchina, riducendo così l’uso di memoria sul disco, l’uso di ram (si parla generalmente di 25-30 mega) e il carico sulla cpu, oltre ad un notevole aumento della velocità di apertura/esecuzione/utilizzo dell’applicazione.
Contro: il rovescio della medaglia è uno soltanto: l’aggiornamento dell’applicazione è possibile solo ricompilando i sorgenti aggiornati.
I sorgenti: i sorgenti sono distribuiti sotto forma di archivio compresso, in formato .tar, .tar.gz (o .tgz), .tar.bz2, .tbz2, o .tbz e .tar.Z, l’estensione si riferisce al tipo diverso di compressione, ma la sostanza e l’operazione di decompressione rimane generalmente la stessa per tutti i formati.
Primi passi:
Preparare l’ambiente: per compilare il sistema richiede il compilatore, gcc e python sono ormai istallati di default su tutte le distribuzioni ma non tutti i programmi sono scritti in C o in python, quindi probabilmente si avrà bisogno di diversi compilatori, dipende dal tipo di applicazione che si andrà a compilare, i sistemi debian-based hanno bisogno di un pacchetto: build-essential, il quale si porta dietro tutte le dipendenze necessarie, quindi il primo passo è installare questo pacchetto (personalmente consiglio di installare anche cmake):
sudo apt-get install build-essential && cmake
Scaricare il sorgente: poniamo il caso ci sia la necessità di installare Firefox, bisognerà recarsi sul sito, cercare i sorgenti (che si trovano nel formati .tar ecc., non i .deb o. rpm perché si tratta di precompilati) e scaricarli col browser nella cartella impostata, alternativamente è possibile farlo da terminale con
wget http://indirizzo del file da scaricare.
Scompattare i sorgenti: è sufficiente fare doppio click sul pacchetto per aprire il gestore degli archivi e successivamente scompattare dove si vuole i sorgenti, altrimenti c’è sempre il terminale:
tar xvfz nomedelfile.tar.gz
tar xvfj nomedelfile.tar.bz2
Leggere il file di istruzioni: è sempre caldamente consigliato leggere il file INSTALL o Readme, per due motivi: li saranno scritte tutte le eventuali dipendenze ed è possibile che il pacchetto non sia stato creato con gli Autotools quindi richieda altri comandi per la compilazione.
Installare le dipendenze: per una compilazione “totale” sarebbe buona norma compilare anche le dipendenze (a volte è necessario, dove non si trovi la dipendenza precompilata) ma è ovvio che ciò porta via una gran quantità di tempo, quindi la cosa più semplice e veloce è installare le dipendenze col gestore del pacchetti:
sudo apt-get install nome dipendenza1 && nome dipendenza 2 (ecc…)
La compilazione:
cd: anzitutto è necessario portarsi dentro la cartella dell’applicazione, quella che è stata in precedenza scompattata:
cd nome della cartella
./configure: lanciare lo script configure è essenziale per passare alla fase successiva, questo script controlla la dipendenze e le librerie, quindi se per caso c’è una dipendenza non richiesta dall’applicazione che si vuole compilare ma da una sua dipendenza o se manca una libreria, lo script restituirà un’errore del tipo:
configure: error: xml2-config not found. Please check your libxml2
in questo caso sarà quindi obbligatorio installare il pacchetto libxml2 e rilanciare lo script sempre col comando:
./configure
N.B. Spesso l’errore potrebbe riguardare un pacchetto o libreria che sembra già installata, in quel caso è necessario installare la versione in via di sviluppo che è denotata dal suffisso -dev (esempio gimp-dev o firefox-dev o libxml2-dev)
make: se configure è uscito senza problemi, si può lanciare il make, se si dispone di un processore dual core o con più core o con l’hypertreading, è possibile dimezzare i tempi del make (che normalmente è un processo lungo) dando questo comando:
make -j2 (ovviamente si può sostituire 2 con 3 o 4, dipende dal numero di core a disposizione e che si vuole usare)
anche il make potrebbe dare errori, sempre riguardanti le dipendenze, magari qualcosa che il configure non può controllare (il caso delle dipendenze di dipendenze), quindi bisognerà controllare l’errore, cercando il nome del pacchetto in questione ed installarlo (come dicevo prima tipicamente di tratta di pacchetti -dev)
make install: questo è l’ultimo passo, è molto difficile che esca con degli errori ma è pur sempre possibile, e in questo caso conviene o inserire l’errore su Google e cercare o rivolgersi al forum di supporto, con questo comando è possibile installare tutti i file che sono stati generati dal make:
sudo make install
sudo make uninstall (per disinstallare)
NOTA: è pratica comune per chi usa Debian e derivate creare un pacchetto .deb autoinstallante piuttosto che procedere al make install (quindi è da fare subito dopo il make, saltando il passaggio del make install), in questo modo sarà possibile disinstallare il pacchetto direttamente da synaptic:
sudo apt-get install checkinstall
sudo checkinstall
si presenterà un menu dove è possibile cambiare alcuni parametri, normalmente non serve cambiare nulla, può accadere che checkinstall non funzioni, quindi conviene passare al make install.
Procedura standard per compilare un’applicazione Kde 4
Le applicazioni per Kde hanno una procedura uguale ma comandi leggermente diversi:
I passaggi sono gli stessi della sezione primi passi (quindi scaricare il sorgente, leggere le istruzioni ecc…) poi cambiano.
per prima cosa bisogna creare una cartella che verrà chiamata build (ovviamente dentro alla cartella dove si trova il programma da compilare):
mkdir build && cd build
qui non è usato lo script configure ma cmake (quindi è necessario il pacchetto cmake):
cmake ../ -DCMAKE_INSTALL_PREFIX=’kde4-config-prefix’
successivamente:
make && sudo make install (è possibile darli staccati)
Alcune applicazioni possono richiedere comandi aggiuntivi che sono descritti nei file di istruzioni.
Buona compilazione!










