Home > GNU/Linux, Guide pratiche GNU/Linux, newbie > Come si compila un programma da sorgenti. Guida per principianti

Come si compila un programma da sorgenti. Guida per principianti

Premessa: nella maggior parte dei casi è facile trovare un pacchetto deb o un repository dove scaricare i programmi che vi servono già compilati. Questa è la strada da preferire rispetto alla compilazione. Seguite i suggerimenti di questo post e ricordate che a questo indirizzo c’è il motore di ricerca dei repository ppa per Ubuntu su Launchpad.

Premessa n.2: prima di avventurarvi nella compilazione, cercate di capire cosa significa leggendo questo post e i successivi.

…………….

1. Procuriamoci il necessario per la compilazione dei programmi

sudo apt-get install build-essential

Il pacchetto build-essential è in realtà vuoto ma installandolo porterà con sé diversi pacchetti necessari per la compilazione di molti programmi, tra cui il compilatore per il C++ (chiamato g++) e gli header delle principali librerie. Ubuntu e Debian infatti raccolgono gli header delle librerie, necessari per la compilazione dei programmi, in pacchetti separati rispetto al binario. Ad esempio il pacchetto delle librerie GTK si chiama libgtk2.0-0 mentre il pacchetto con i suoi header si chiama libgtk2.0-dev.

Ma cosa sono gli header? Fondamentalmente sono dei file che contengono i nomi e i parametri delle funzioni contenute nelle librerie (tecnicamente si dice “prototipi delle funzioni”). Servono al compilatore per poter rintracciare le funzioni, mentre successivamente il linker si occuperà di collegare il nostro programma compilato con le librerie già presenti nel sistema.

2. Scarichiamo il sorgente

Di norma i sorgenti sono contenuti in file compressi tra.gz oppure tar.bz2. Possiamo scaricarli con il nostro browser preferito oppure da terminale:

wget http://indirizzo-del-file-sorgente

3. Scompattiamo i sorgenti

Possiamo tranquillamente cliccare con il tasto destro del mouse sul pacchetto e cliccare su “estrai qui”, oppure da terminale:

tar xvfz nomedelfile.tar.gz

oppure nel caso dei file tar.bz2

tar xvfj nomedelfile.tar.bz2

Vi ricordo che scrivendo le prime lettere del nome del file e poi premendo [tab] il nome si completerà da solo.

4. Andiamo nella directory dei sorgenti

Se abbiamo installato l’estensione di nautilus-open-terminal possiamo tranquillamente cliccare sulla cartella estratta con il destro e poi su “Apri nel terminale”. Altrimenti prima vediamo le directory create con il comando

 ls -l 

le directory sono quelle che – di default – hanno un colore azzurro e prima dei permessi presentano il flag “d”. Ad esempio:

drwxr-xr-x  2 guido guido     4096 2009-12-03 00:16 Video

poi ci entriamo dentro con

cd nomedelladirectory

Anche qui, inserendo le prime lettere e premendo il tasto [tab] il nome viene completato automaticamente.

5. Leggiamo le istruzioni

Di norma nella cartella dei sorgenti è presente un file INSTALL o README con le istruzioni. La grande maggioranza dei programmi è impacchettata con gli strumenti di GNU Autotools che hanno un metodo standard di installazione, oggetto di questa guida. In caso contrario dovete seguire le istruzioni contenute nel file e cercare di capirle oppure chiedere sul nostro forum LQH.

D’ora in poi supporremo di avere un sorgente impacchettato con lo standard GNU Autotools.

6. Verifichiamo la presenza delle librerie

Rimanendo all’interno della directory diamo il comando

./configure

Quasi sicuramente la verifica si interromperà con un errore perché ci manca qualche libreria. Questa è la parte rognosa. Supponiamo che il messaggio di errore sia

configure: error: xml2-config not found. Please check your libxml2

Il messaggio ci avverte che mancano gli header della libreria libxml2. Apriamo Synaptic, clicchiamo su “cerca”, selezioniamo “nome” e scriviamo due parole “chiave”: xml  -dev. In questo modo cercheremo i pacchetti che contengono nel nome la parola “xml” e la desinenza “-dev” che identifica i nomi dei pacchetti contenenti gli header delle librerie. Ne troveremo molte, ma solo una somiglia effettivamente alla libreria richiesta dal comando configure: nel nostro caso si tratta di libxml2-dev.

Il motivo per cui in generale è meglio non scrivere nella ricerca “lib” o i numeri o altre cose non strettamente identificative è che a volte i nomi dei pacchetti non corrispondono precisamente a ciò che ci viene detto dal configure.

Torniamo nel terminale e tentiamo di nuovo con

./configure

Se ci viene segnalata un’altra libreria mancante, ricerchiamola su Synaptic come mostrato prima, finché il comando non restituisce errori.

5. Compiliamo

Ora siamo pronti per compilare:

make

Se la compilazione restituisce degli errori, è molto probabile che non ci siamo accorti che il configure non era andato a buon fine. Ripetiamolo e controlliamo le ultime righe dell’output. Un po’ di inglese è necessario….

6. Installiamo

Fondamentalmente ci sono 2 metodi. Uno è il classico:

sudo make install

ma presenta lo svantaggio di dover conservare la directory di installazione del programma se poi vogliamo disinistallarlo con

sudo make uninstall

Io preferisco invece il medoto checkinstall che crea un pacchetto debian e lo installa, così poi possiamo eventualmente disinstallarlo da Synaptic o con apt-get remove.

Diamo quindi

sudo apt-get install checkinstall

e quindi:

sudo checkinstall

Ci verranno fatte delle domande e presentato un menu in cui è possibile cambiare i parametri del pacchetto (nome, numero della versione, ecc.) Di norma non serve cambiare nulla.

Checkinstall lavorerà un po’ e alla fine ci dirà che il pacchetto è installato. Raramente capita che non funzioni, in tal caso ripieghiamo sul metodo del sudo make install

Serve aiuto? LQH!

  1. Gius
    6 dicembre 2009 alle 11:12

    G r a z i e !

  2. Tommaso
    6 dicembre 2009 alle 11:45

    Questa è manna che scende dal cielo per babbazzi informatici come me che non hanno ancora capito come cavolo si compilano questi benedetti sorgenti!!!
    Grazie Mille!!!

  3. 6 dicembre 2009 alle 11:53

    Ottima guida per neofiti e per dare maggiore comprensione al mondo della compilazione.

  4. Shishimaru
    6 dicembre 2009 alle 12:25

    ottima guida! buona anche per chi sa già come si fa!

  5. 6 dicembre 2009 alle 14:26

    Ottima, però non metti in conto il sh autogen.sh!

    ;D

    • 13 dicembre 2009 alle 2:33

      e allora dovrei anche spiegare python setup, qmake e altri metodi. Troppa confusione. Questa guida vale nel 90% dei casi e mi pare abbastanza🙂 per il resto bisogna comunque leggere il README e/o l’INSTALL

  6. SuNjACk
    6 dicembre 2009 alle 20:11

    Bell’articolo guiodic

    Finalmente ho capito come funziona la compilazione

  7. Rick
    6 dicembre 2009 alle 23:13

    Validissima questa tua spiegazione ma il turno della domanda scema oggi tocca a me: ma che vantaggi ho nel compilarmi il sorgente?
    Certo se trovo solo i sorgenti di un determinato programma ok, oppure è stato fatto solo l’rpm e io uso Ubuntu ci posso stare. Ma se c’è un programma già pronto avrei dei significativi vantaggi nel farlo da me?

    • 7 dicembre 2009 alle 10:59

      Nessun vantaggio in genere. Come ho detto è solo l’ultima spiaggia.

    • artic80
      11 dicembre 2009 alle 15:17

      @ Rick: effettivamente come dice Guido nessun vantaggio, ma io personalmente posso dirti che spesso e volentieri mi creo il deb in casa e me lo conservo. In questo modo ho tutti i software che di default devono essere sulle mie distro anche dopo che ho piallato (causa smanettamenti), li installo velocemente senza andarmeli a scaricare o dovermi ricordare il sito dove l’ho preso, ecc…

      @ Guidoic: grazie come sempre.

  8. Sanzo
    7 dicembre 2009 alle 0:59

    Un altro interessantissimo articolo, fai sempre un gran lavoro perfetto sia per i neofiti che per gli utenti un filo più avanzati!

  9. Alessandro T
    7 dicembre 2009 alle 12:56

    Ottima guida… magari l’avessi avuta un paio di anni fa, quando provavo a compilare i programmi che trovavo sulle riviste e il famoso “basta dare nel terminale un ./configure-make-sudo make install” (incredibile ma scrivono tutti solo questo), non bastava *mai* ! 😀

    Continua così, stai facendo un gran bel lavoro con questo blog.

  10. Giwex
    8 dicembre 2009 alle 16:42

    Grazie mille! Ho appena compilato il mio primo programma da sorgenti😉

  11. 10 gennaio 2010 alle 18:29

    ma un programma compilato poi si può distribuire senza obbligare gli altri a compilarlo?
    Scusate la mia ignoranza, ma non ho mai compilato e uso linux da poco.
    Sto cercando ardourvst già compilato ma vedo che dicono tutti di compilarlo.
    Ma una volta che l’ha fatto uno, non si può rendere disponibile per tutti?
    Grazie
    Paolo

    • 14 gennaio 2010 alle 13:05

      certo che sì, infatti è per questo che esistono i repository.

  12. 14 gennaio 2010 alle 13:43

    quindi si trova ardourvst pronto da installare senza compilarlo?
    e se sì dove lo trovo?
    grazie
    Paolo

  13. lorenzo
    3 febbraio 2010 alle 19:13

    ragazzi..aiutatemiiiiii…vi prego sono molto nabouso linux da 2 ggnn so fare niente. proprio nnt. allora ho scoperto solo che alt+f2 mi apre la pagina di comando…solo qst e dei tipi di pacchetti deb, tar.gz, diff.gz….quelo che voglioio, se nn chiedo troppo e che mi spiegate passo a passo come devo fare ex. apri finestra di comando(alt+f2). uso Linpus Linux Lite 1.0.7.E pls help me!

  14. lorenzo
    3 febbraio 2010 alle 19:21

    dimenticavo proprio quello x cui vi scrivo e cioè
    voglio imparare ad installare i programmi come skype
    emulator di progr da setup.exe x installare su linux “winie” ecc. quando scarico qualcosa me lo apre (tipo un archivio rar) e mi elenca in una finestra tutti i file non posso fare che solo estrai…aiutatemi dettagliato ..nn so fare un tubo…Grazie!

  15. 26 luglio 2014 alle 2:03

    Technically, however, you cannot consider such software as a dynamic keyword insertion plugin because some aspects of the
    keyword replacement process are still done manually.
    You’re storing your files online because of security and protection. This agility will enable banks to
    compete with the large international financial institutions that venture into their markets.

  16. 10 agosto 2014 alle 8:02

    All in all, you will be able to keep track of A-Z operation of the
    company with the help of this software – just that you need to do proper research before
    you get your software. As discussed in the above section of this segment, PDF files can be
    encrypted with two types of protection passwords:
    . Thus, if the online marketer is using 20 keywords for his campaign, then the software
    will create 20 pages.

  17. resko83
    1 dicembre 2015 alle 14:48

    Ottima guida, ma quello che hai detto è una piccola parte di quel problema,con quello che hai scritto non c’hai imparato niente.

  1. 9 agosto 2010 alle 23:24
  2. 17 febbraio 2011 alle 19:37

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: