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

Prima parte: configurazione

Lo script di configurazione solitamente vi comunica che cosa non va, molto spesso in modo chiaro. Ciononostante in alcuni software riuscite a capire soltanto in fase di compilazione che la riga di evocazione di configure è sbagliata. Per questo vi suggerisco sempre di studiare il vostro sistema, installare quello che c'è da installare e controllare che le dichiarazioni date a configure corrispondano a verità.

Suggerimento: i procedimenti di configurazione e compilazione possono essere interrotti in qualsiasi momento con Ctrl+C.

Gli errori più comuni in fase di configurazione sono tre:

  • opzioni forzate
  • errori di dipendenze
  • errori di versione

Caso: opzione forzata in configurazione

Gli errori derivanti da opzioni forzate possono avere due conseguenze distinte. La prima, il fallimento della configurazione in seguito a dei test di presenza di header e librerie, e la seconda è il termine della configurazione senza problemi e il fallimento della compilazione perché non c'è stato alcun test di presenza: a causa di questo l'errore viene "ereditato" dalla compilazione.

Nello screenshot riportato ho tentato di configurare faad2, un codec audio, abilitando il plugin per xmms, un programma per leggere flussi audio come MP3 o wav. Ho forzato l'opzione con questa invocazione di configure:

./configure --with-xmms

Compilation_001_faad2_configure_forced.pngSoluzioni possibili

  1. Installare xmms;
  2. Rimuovere del tutto l'opzione --with-xmms dalla riga di configure.

Ciò vale per qualsiasi libreria, applicazione o header mancante.

Caso: errore di dipendenza

I cosiddetti "errori di dipendenza" possono scaturire da un'opzione forzata o da una dipendenza fondamentale (o requisito fondamentale) insoddisfatta. Nel caso dell'opzione forzata il requisito non è necessario per il funzionamento del programma, ma se è assente ne preclude una o più funzionalità. L'assenza di un requisito fondamentale, che causa l'errore di dipendenza che vedremo adesso, fa invece fallire la configurazione, o la compilazione, e rende obbligatoria l'installazione del pacchetto mancante.

Nell'esempio ho tentato di compilare rtorrent, un client torrent testuale, senza disporre di libsigc++, uno dei suoi requisiti fondamentali. L'invocazione di configure è semplice:

./configure

E questo è il risultato:

Compilation_001_rtorrent_configure_sigc.pngL'errore è ben visibile dalla dicitura Package requirements (XXXXXXXXXXX) were not met con il nome del pacchetto mancante tra parentesi.

Soluzioni possibili

  1. Installare la dipendenza mancante;
  2. Installare un software analogo ma che non abbia dipendenze irrisolvibili.

Caso: errore di versione

L'errore di versione è più subdolo e difficile da scovare e da correggere. Esso è un particolare errore di dipendenza dove non è l'intera libreria a mancare, ma alcune funzioni della libreria stessa. L'errore può manifestarsi quando l'utente aggiorna un programma ma non le sue dipendenze: il programma aggiornato potrebbe dipendere da alcune funzioni non presenti nella vecchia versione della libreria, e gli effetti potrebbero essere imprevedibili, dal mancato caricamento del software al crash del programma stesso.

Nell'esempio ho installato nel sistema la versione 0.4.4 di una libreria che si chiama glitz e si occupa di rendering grafico. cairo è un'altra libreria grafica che genera caratteri a video tramite metodi simili a quelli usati per il rendering di caratteri in documenti PDF o PostScript. La versione di cairo che ho voluto compilare era la 1.8.10, e se ne viene abilitato glitz essa ne richiede la versione 0.5.1 o superiore.

Usando pkg-config e verificando la versione di glitz installata con

$ pkg-config --modversion glitz

L'output è 0.4.4. Ciononostante la configurazione di cairo si ferma alla verifica della versione di glitz:

./configure --enable-glitz

Compilation_001_cairo_configure_version.pngDi primo acchito potrebbe sembrare un semplice errore di dipendenza, ma siccome abbiamo verificato la versione con pkg-config e la richiesta di glitz è la versione 0.5.1, è evidente che dobbiamo agire su glitz.

Soluzioni possibili

  1. Aggiornare la dipendenza al numero di versione minimo richiesto.
  2. Installare un software analogo ma che non abbia dipendenze irrisolvibili.

Questo tipo di errore potrebbe essere molto comune se installerete librerie da repository e tenterete di compilare software che usano versioni più recenti delle stesse librerie.

Pagina successiva
Troubleshooting: Compilazione
Pagina precedente
Appendice 1: Troubleshooting

 

Segnala ad un amico

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

    © Copyright 2025 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.23 sec.
    •  | Utenti conn.: 77
    •  | Revisione 2.0.1
    •  | Numero query: 39
    •  | Tempo totale query: 0.02