Translation(s): English - Italiano

(!) ?Discussion

Domande di sviluppo

Si sta cercando di compilare qualcosa e si ottiene l'errore "il compilatore C non può creare file eseguibili".

apt-get install build-essential

Si sta cercando di configurare il kernel con make menuconfig e si ottiene l'errore "curses.h non trovato".

apt-get install build-essential libncurses5-dev

Cosa è necessario per compilare un programma che usa le librerie GTK+ ?

apt-get install libgtk1.2-dev

per le GTK+, oppure

apt-get install libgtk2.0-dev

per le GTK+2. Non è possibile compilare un'applicazione scritta con le GTK+ con le librerie GTK+2. Le API non sono compatibili.

Cosa è necessario per compilare un programma che richiede glib ma non GTK+ ?

apt-get install libglib1.2-dev

si noti che questa situazione è piuttosto rara, giacché solitamente installando libgtk1.2-dev si otterrà libglib1.2-dev.

Cosa è necessario per compilare un programma che usa le librerie QT ?

apt-get install libqt3-mt-dev

Cosa è necessario per compilare un programma che usa le librerie SDL ?

apt-get install libsdl1.2-dev

Cosa è necessario per compilare un programma che usa le librerie libz?

apt-get install zlib1g-dev

Cosa è necessario per compilare un programma che usa il server X ?

apt-get install xlibs-dev

Come si compila il kernel alla maniera Debian?

apt-get install build-essential kernel-package

Se si desidera usare menuconfig, installare anche libncurses5-dev o libgtk1.2-dev per gconfig nella versione 2.6 del kernel. Si installi bin86 per i kernel 2.2 o inferiori su architettura i386.

Estrarre i sorgenti del kernel, spostarsi nella directory ottenuta e applicare le patch volute (opzionale), quindi eseguire il comando:

make-kpkg --revision=custom.1 binary-arch

Verranno creati due file .deb nella directory superiore. È possibile modificare la stringa di revisione per includere il nome della macchina, ecc.

Se si dispone di moduli di terze parti in /usr/src/modules/ aggiungere modules_image alla fine del comando make-kpkg in modo da compilare un pacchetto per i moduli (vale per PCMCIA, nVidia, ATI, ecc., ma non si applica ai moduli che fanno parte dei sorgenti di Linux, segnati con M).

Compilando sorgenti del kernel più vecchi su nuove versioni di Debian potrebbe essere necessario utilizzare una versione di gcc più vecchia della predefinita.

Il processo di compilazione è piuttosto lento, si usi ccache per accelerarlo (sarà d'aiuto per le volte successive). Per fare ciò è necessario istruire make-kpkg in questo modo:

MAKEFLAGS='CC=ccache\ gcc'
export MAKEFLAGS

Notare che gli apici ed il backslash sono importanti per far funzionare ccache correttamente, senza di essi la compilazione fallirà.

É inoltre possibile accelerare ulteriormente la compilazione utilizzando distcc. Ulteriori informazioni su come combinare distcc e ccache sono disponibili qui.

Come si ricompila un pacchetto Debian dai sorgenti?

Prima di tutto aggiungere una voce deb-src al file sources.list. Ad esempio,

deb-src http://http.us.debian.org/debian/ lenny main contrib non-free

(Si usi sid al posto di lenny se si vuole compilare un backport, essendo solo il codice sorgente non sarà dannoso). Dopodiché:

apt-get update
apt-get build-dep mio_pacchetto
apt-get -b source mio_pacchetto

Il file .deb risultante si troverà nella directory corrente. Nel caso si volesse modificare il codice sorgente prima di compilare, omettere l'opzione -b, spostarsi nella directory ottenuta, apportare le modifiche e quindi eseguire:

fakeroot debian/rules binary

(o se si preferisce dpkg-buildpackage -uc -us -rfakeroot).

Come ricompilare i pacchetti con le ottimizzazioni specifiche per la CPU?

Installare il pacchetto pentium-builder e seguire le istruzioni.