Punto informatico Network
Canali
20091011195959_536691528_20091011195943_1980265020_sl_open.png

Cenni generali sulla compilazione in GNU/Linux

21/05/2010
- A cura di
Linux & Open Source - Probabilmente saper "compilare" qualcosa in sistemi operativi derivanti da UNIX è una delle basi a cui riferirsi per ottenere una vera e propria "raffinazione" e customizzazione dei software installati nel sistema.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

compilazione (1) .

Valutazione

  •  
Voto complessivo 4 calcolato su 25 voti

Scarichiamo e compiliamo yasm

yasm è un piccolo assembler che potrà tornarvi utile per compilare dei software particolari, e in ogni caso la sua costruzione e installazione è molto semplice e richiede pochi comandi.

Confermate ogni comando come utente normale. Potrete usare sudo per operazioni che richiederanno consenso da superuser.

(1) Recatevi sul sito http://www.tortall.net/projects/yasm/wiki/Download;

(2) Scaricate (preferibilmente nella vostra directory /home) il file al link "Source.tar.gz";

(3) Entrate nella vostra home (se non ci siete) con cd ~ o cd $HOME;

(4) Estraete il pacchetto con tar -xzf source.tar.gz;

Personalmente vi consiglio di creare una sottocartella "source" o "sorgenti" in cui sarete liberi di fare tutti gli esperimenti che vorrete. Quindi il comando precedente si trasforma in tar -xzf source.tar.gz -C source.

(5) Entrate nella cartella appena creata con cd source/yasm-x.x.x, dove x.x.x è il numero di versione di yasm.

Siete in ciò che d'ora in poi chiameremo "albero dei sorgenti" (in inglese "source tree"), e la cartella in cui siete appena entrati si chiama "radice dei sorgenti" ("source root"). Vedrete un gruppo di file e/o di cartelle, tra cui uno script bash chiamato configure. Esso è il nostro punto di partenza, ma prima di andare avanti è bene leggere la documentazione del software, solitamente contenuta interamente in un file di testo README e le istruzioni di installazione nel file INSTALL nei progetti più piccoli. In quelli più voluminosi (come il kernel Linux o OpenOffice) la documentazione potrà essere situata in una sottocartella distinta, di solito nominata docs o documentation.

Potete poi fare visita alle singole cartelle per vederne i contenuti, o provare a guardare direttamente il codice sorgente leggendo i singoli file con un editor di testo ASCII come jed, nano, vim, gedit, kedit, kate, mousepad, emacs...

Quando avrete finito la visita all'albero dei sorgenti potrete entrare nello specifico evocando una lista di opzioni possibili di configure con il seguente comando dalla radice dei sorgenti:

./configure --help | less

(Il carattere tra --help e less è una pipe.)

Parentesi su "configure"

Nella stragrande maggioranza dei casi il comando valido sarà quello che ho appena scritto ma, siccome non tutti i sorgenti sono uguali, potranno esistere diversi configuratori possibili (x264, perl, tcl, anche il kernel Linux stesso), con diverse opzioni, o potranno anche non esistere.

La configurazione, infatti, generalmente serve solo a generare i Makefile, ovvero delle liste di "azioni" da far fare a make, che è il manutentore principale di un blocco di sorgenti e richiama i compilatori con una serie di opzioni definite nei Makefile, e quindi nella configurazione.

Che faccio se non trovo configure?

In alcuni casi configure potrà non esistere del tutto nell'albero dei sorgenti e dovrete quindi andare a cercare direttamente Makefile (esattamente con questo nome), modificarlo affinché assecondi i vostri bisogni e far partire direttamente la compilazione.

Può anche darsi che configure e/o Makefile risiedano in una sottocartella (nel caso di OpenOffice o XviD), e potete cercarli con un semplice

find . -name "configure" -o -name "Makefile"

Se non riuscite a trovare né configureMakefile da nessuna parte assicuratevi che esista un file chiamato configure.ac o configure.in. In questo caso dovete anteporre alla chiamata di configure il comando

autoconf

Che, in caso di successo, provvederà a crearlo per voi. Riferitevi all'appendice 2, Software di controllo versione, per altre informazioni su autoconf e sulla preconfigurazione.

Se non avrete trovato neppure configure.ac o configure.in rileggete la documentazione, o cercate informazioni nel sito degli sviluppatori del pacchetto che volete compilare.

Ho trovato configure...

Stiamo per compilare yasm, e nella lista delle opzioni richiamate dall'evocazione dell'aiuto di configure troviamo una opzione che si chiama --disable-nls.

NLS (Native Language Support) è il supporto di internazionalizzazione di un software. Normalmente è abilitato, se invece viene usata l'opzione --disable-nls esso viene disabilitato e, oltre a risparmiare spazio su disco per il programma si risparmia tempo per la sua compilazione. Personalmente lo trovo superfluo, ciononostante potete lasciarlo attivo (omettendo quindi l'opzione) e se in fase di comfigurazione o compilazione sorgono errori dovuti all'internazionalizzazione dovete disabilitare NLS per forza di cosa.

Assicuratevi quindi di essere nella radice dei sorgenti (o, più precisamente, allo stesso livello di directory di configure) e lanciate questo comando:

./configure --disable-nls

Premete Invio e osservate lo script configure che raccoglie informazioni sull'ambiente operativo e abilita o disabilita alcune opzioni, a seconda che ne trovi disponibili le opzioni o le librerie, o che vengano abilitate o disabilitate da riga di comando. [8] [9] [10] [11] [12]

Se la configurazione avrà avuto successo non si saranno verificati blocchi o errori di dipendenze, e vedrete tra e ultime righe alcune linee che diranno creating percorso/sottocartella/sorgenti/Makefile. In caso di insuccesso vi consiglio di rivedere le opzioni di configure o di verificare che effettivamente il sistema possieda tutti i requisiti necessari per compilare il vostro software. Leggete l'appendice 1, Troubleshooting, per ulteriori informazioni.

Compiliamo

La configurazione è andata a buon fine, oppure avete trovato Makefile ma non avete visto configure. È ancora possibile modificare qualcosa nella configurazione dei sorgenti agendo direttamente sui Makefile, ma quasi sempre non è necessario, e se avrete aggiunto parametri alla riga di comando (consultate l'appendice 5, Parametri aggiuntivi, per altre informazioni) saranno stati collocati automaticamente in tutti i Makefile.

Tutto ciò che dovete fare ora è scrivere

make

Confermate con Invio e lasciatelo lavorare.

Vedrete una serie di linee di comando, anche molto complesse (in un terminale da 80 colonne per 25 linee le invocazioni di gcc posso arrivare anche a coprire tutto lo schermo, per un totale di poco meno di 2000 caratteri per ogni invocazione...), che avranno il compito di generare per voi il software, pezzo per pezzo, seguendo le regole dettate nei Makefile sotto la direzione di make. Ed è proprio in questa fase che possono verificarsi gli errori più subdoli e inafferrabili. Fate riferimento all'appendice 1, Troubleshooting, per informazioni in merito.

Ciononostante, se avrete seguito i miei consigli e avrete installato tutti gli strumenti necessari, yasm si compilerà perfettamente e senza errori. Una regola valida, seppur empirica, per capire se la compilazione ha avuto successo è controllare i messaggi di make: se nel suo output non esistono righe che comincino per error o Error è lecito pensare che non vi sia stato alcun errore. Se la compilazione si blocca dovete ritornare indietro e rivedere che cosa può essere andato storto, a cominciare dalla configurazione, seguendo le tracce fornite nell'appendice 1.

Possiamo quindi passare ad installare il software nella locazione di default (/usr/local con tutte le sottocartelle) [13] con questo comando:

sudo make install

Che è l'unico comando che richieda necessariamente sudo per funzionare, se siete utenti normali. Potrete poi richiamare yasm come qualsiasi programma installato, semplicemente digitandone il nome dal prompt di bash.

Ben fatto, avete appena compilato il vostro primo programma!

Ulteriori usi di make

make install può non essere l'unica opzione disponibile per il comando make. L'uso di default per make è la compilazione, a seconda delle regole scritte nei Makefile. Nello stesso Makefile potrebbero esserci altre regole, tra cui:

uninstall: i file installati dopo la compilazione con make install vengono rimossi. Di solito non vengono rimossi eventuali file di configurazione nelle directory home degli utenti, come nel caso di Mozilla Firefox o aMule. Sappiate che in alcuni sorgenti la regola uninstall non esiste.

clean: l'albero dei sorgenti viene ripulito da tutti i file originati dalla compilazione, ma non dalla configurazione: di seguito sarà necessario ricompilare il software. È consigliato solo in caso di modifiche manuali ai Makefile, o qualora non esistano script configure nell'albero dei sorgenti originario.

distclean: l'albero dei sorgenti viene completamente ripulito, anche da tutti i file generati in fase di configurazione, riportando la radice ad uno "stato neutrale" come era appena dopo l'estrazione dei file dall'archivio, eccetto quando siano state applicate delle patch. È consigliato praticamente sempre: in occasione di aggiornamenti o installazioni di librerie o header, cambi di processore/RAM/scheda madre...

Questi sono i più diffusi. Molti software contengono Makefile con regole personalizzate, ma generalmente le regole install, uninstall, clean e distclean sono le più usate.

Pagina successiva
Raccomandazioni finali
Pagina precedente
Percorso di un file sorgente

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2019 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.27 sec.
    •  | Utenti conn.: 91
    •  | Revisione 2.0.1
    •  | Numero query: 45
    •  | Tempo totale query: 0.09