Home > GNU/Linux, newbie > Guida per principianti a GNU/Linux: i sorgenti e GNU make – seconda parte –

Guida per principianti a GNU/Linux: i sorgenti e GNU make – seconda parte –

Nel post precedente abbiamo visto come si compila un programma scritto da noi, tramite il compilatore GCC. Ma quando scarichiamo i sorgenti da Internet o dai CD delle riviste, di solito li troviamo in un formato compresso (tar.gz o tar.bz2). Le guide ci dicono che dobbiamo scompattarli e poi dare tre “magici” comandi:

./configure
make
sudo make install

Perché invece non si usa semplicemente gcc?

Volendo si potrebbe, in effetti. Ma un programma complesso di solito è spezzettato in tanti file e occorre sapere bene come combinarli. Inoltre è possibile che venga richiesta la presenza di determinate librerie e quindi ci vuole qualcosa che controlli la loro esistenza.

In effetti questo qualcosa è il ./configure che fa un “check” delle librerie presenti nel sistema. Se non trova qualche libreria necessaria, ci avverte che dobbiamo installarla.

Dando il make, invece, inizia la compilazione vera e propria, che creerà il nostro programma. Non solo l’eseguibile, ma anche tutti i file di supporto come ad esempio le pagine del manuale del programma, le icone, ecc. Attenzione però: make usa sempre gcc, non è un compilatore, ma solo un programma che automatizza la compilazione di sorgenti complessi.

Infine con make install trasferiamo tali file dalla directory di compilazione alle directory del sistema.

Make, come al solito, è un programma GNU.

Detto così sembra semplice e in effetti lo è, se si ha un po’ di esperienza e si capiscono i messaggi di errore che potrebbero comparire.

Il fondo installare i programmi così però è un po’ noioso. Bisogna stare attenti a tutte le librerie che mancano, eventualmente installarle, e poi aspettare che finisca la compilazione. Per un programma come Firefox potrebbe richiedere delle ore.

C’è un metodo più rapido? Sì: prendere i programmi già compilati. Ma questo lo spiegherò nel prossimo post, parlando dei gestori dei pacchetti, soprattutto quello di Debian (e di Ubuntu), ovvero APT.

  1. 78sara78
    2 agosto 2008 alle 14:43

    Imparando a compilare da sorgenti in pratica si può installare qualsiasi programma per GNU/Linux in una qualsiasi distribuzione anche se non è presente nei repository o sbaglio?
    A proposito: tutte le distro hanno i repository o ce n’è qualcuna che ti fa dannare alla ricerca dei programmi?

  2. SimPE94
    2 agosto 2008 alle 15:20

    Beh, sembra che slackware non abbia molto software precompilato…

  3. sid9477
    2 agosto 2008 alle 16:20

    i tgz sono per slack… però li compila con un solo comando, cioè installpkg…

  4. alberto
    2 agosto 2008 alle 16:56

    [OT] forse…

    Ciao.
    Arrivo sul tuo blog dal forum di ubuntu dove non ho trovato risposta ad uno strano problema: ti dico, e scusami dello spazio rubato…

    Nuovo portatle ASUS, installo la 8.04 senza problemi particolari, qualche ritocco e via…
    Scheda WiFi Atheros AR5007EG disabilitato driver propietario, driver win con ndiswrapper ok
    Scheda rete SiS191 Giga riconosciuta dal sistema e ok
    Le connessioni funzionano e passo tranquillamente da una all’altra…

    Ma ecco il mistero: ho sempre lavorato con il cavo di rete attaccato. Lo stacco.
    Riaccendo, la mattina dopo, e dopo qualche minuto si blocca tutto. Varie prove, sempre così.
    Faccio in tempo a leggere in dmesg “eth0:PHY reset until link up” (mai sentito…) ripetuto decine di volte prima che il sistema si blocchi.
    Mi viene un lampo, attacco il cavo, riavvio…tutto funziona, il mesg sparito… ed io non so cosa pensare…
    Ho letto paginate in rete, ma la cosa sembra non esistere (il mio inglese è patetico…)
    Il PC lo sto preparando per un’amica e non credo che lei lavorerà sempre con il cavo attaccato alla rete… voleva un portatile…:-)
    Per quei pochi minuti che funziona senza cavo, la rete WiFi funziona perfettamente…

    Ecco,scusa se ti ho rotto, ma ti ho visto competente e disponibile…. sono un vecchio 63enne che si diletta con cose più grandi di lui..:-(

    Grazie comunque sia, ed ancora ciao

    Alberto
    aldd@tiscali.it

  5. Grog
    2 agosto 2008 alle 17:57

    Ciao, ho scoperto oggi questo blog e ho già divorato tutti gli articoli, veramente utilissimi per i niubbetti come me.
    Sto da poco cercando di avvicinarmi al pinguino usando ubuntu (sono un niubbuntu user)sul portatile e trovo che questo blog sia l’anello mancante delle varie e professionalissime guide che si trova in giro che però spesso ti dicono come fare le cose ma senza farti capire come funzionano in realtà.

    Grazie e continua così.

  6. guiodic
    2 agosto 2008 alle 18:58

    @sara: sì, e questo vale per qualsiasi sistema Unix.
    Riguardo i repository, tutte le distribuzioni ce li hanno e funzionano più o meno nella stessa maniera. Fa un po’ eccezione Gentoo che compila il programma invece che installare i binari, ma il funzionamento è più o meno identico per il resto.

    @alberto: sembra un bug. Si potrebbe provare a mettere il driver della scheda di rete in blacklist e vedere se questo risolve il problema. Ovviamente non potresti più usarla, ma se il problema si risolve si può fare in modo che il kernel non carichi il driver e poi, quando ti serve davvero, si può dare un modprobe quando il cavo è già connesso.
    Il driver da blacklistare dovrebbe essere sis190.

  7. guiodic
    2 agosto 2008 alle 18:58

    @grog: grazie, in effetti l’intento di questo blog è proprio quello che dici tu.

  8. 2 agosto 2008 alle 19:37

    finalmente ho capito quei comandi e se adesso un configure mi dice qualcosa almeno posso interpretarlo… forse anche capirlo. grazie

  9. Lex
    3 agosto 2008 alle 16:19

    Stai facendo un buon lavoro, complimenti.

  10. caf-pow
    4 agosto 2008 alle 19:50

    sempre ottimi i tuoi articoli, complimenti!

    Una cosa vorrei chiederti.

    Installando da deb si ha la possibilità di gestire la disinstallazione tramite synaptic (ubuntu), mentre se si installa da sorgenti con quale strumento o accortezza si può in modo semplice e indolore rimuovere i programmi compilati?

    Grazie😀

  11. guiodic
    4 agosto 2008 alle 20:17

    Bisogna conservare la directory dei sorgenti da cui abbiamo effettuato l’installazione, entrarci dentro, e dare

    sudo make uninstall

    Abbastanza semplice.

  12. 6 agosto 2008 alle 2:29

    nota importante, prima di compilare meglio farsi un giro nel file README o INSTALL e controllare che invece non ci siano altre strade da seguire per l’installazione… stessa cosa per disinstallare

    inoltre è possibile aggiungere determinate opzioni di compilazione, abilitare o disabilitare features già al configure: ./configure –help | less

    e molto altro ancora in verità, se vogliamo essere completi… il discorso della compilazione dei sorgenti è molto amplio, se ne potrebbe parlare per ore e un post non basterebbe. Ad esempio le compilazioni senza installazioni ecc… un esempio? io uso amule senza installare nè òui nè le wxwidgets, basta saperci giocare…

    @ 78sara78: come ti ha detto Guiodic tutte le distro hanno dei repository, seppur differenti fra loro e, sempre come accennato da Guiodic, il discorso cambia un po’ per quanto riguarda gentoo e si fa piu complesso. Le build disponibili sono presenti in portage, il processo di installazione è fra i piu potenti che abbia mai provato, le compilazioni su questo sistema non seguono poi sempre le classiche regole di personalizzazione, si basano tutte su un altro potente strumento: le USE flag… insomma, qui il discorso è ancor piu amplio, non per niente Gentoo è sconsigliata ai novelli, non perchè sia fatta solo per guru, ma perchè la complessità non è certo buona per cominciare a conoscere un mondo😉

  13. guiodic
    8 agosto 2008 alle 21:44

    @spillo: grazie per l’integrazione.

  14. 19 maggio 2013 alle 17:33

    There is definately a lot to know about this issue.
    I like all the points you made.

  1. No trackbacks yet.

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: