Linux-2.4.26 headers

Tempo approssimativo di costruzione:  0.1 SBU
Spazio necessario sul disco:     186 MB

Installazione degli header del kernel

Non compileremo adesso un nuovo kernel, lo faremo quando avremo terminato l'installazione di tutti i pacchetti. Tuttavia le librerie installate nella prossima sezione devono fare riferimento ai file header del kernel per sapere come interfacciarsi con il kernel. Invece di scompattare nuovamente i sorgenti del kernel, creando il file versione, i link simbolici e così via, copieremo semplicemente gli header dalla directory degli strumenti temporanei in un colpo solo:

cp -a /tools/include/{asm,asm-generic,linux} /usr/include

Alcuni file header del kernel fanno riferimento al file header autoconf.h. Poiché non abbiamo ancora configurato il kernel, abbiamo bisogno di crearci da soli questi file allo scopo di evitare un fallimento della compilazione di Sysklogd. Create un file autoconf.h vuoto con:

touch /usr/include/linux/autoconf.h

Perché copiamo gli header del kernel

In passato era pratica comune fare link simbolici delle directory /usr/include/{linux,asm} verso /usr/src/linux/include/{linux,asm}. Questa era una pratica pessima, come puntualizza il seguente estratto da un post di Linus Torvalds sulla Mailing List del Kernel Linux:

Suggerirei che chi compila nuovi kernel debba:

 - Non avere un solo link simbolico (eccetto quello creato dalla stessa
   costruzione del kernel, cioè il link “linux/include/asm” che è usato solo per la 
   compilazione interna del kernel)

E sì, questo è quello che faccio. La mia /usr/src/linux ha i vecchi
file header 2.2.13 , anche se non ho più un kernel 2.2.13 da _moolto_
tempo. Ma questi header erano quelli verso cui è stata compilata Glibc,
così questi header sono quelli che corrispondono ai file oggetto delle librerie.

E questo è ciò che ad oggi è stato l'ambiente suggerito per almeno gli ultimi 
5 anni. Non so perché la faccenda del link simbolico continui a vivere, come
uno zombie. Praticamente ogni distribuzione ha questo link rotto, e la gente
ricorda ancora che i sorgenti linux devono andare in “/usr/src/linux” anche se
questo non è vero da _moolto_ tempo.

La parte essenziale è dove Linus afferma che i file header devono essere quelli verso cui sono state compilate le Glibc. Questi sono gli header che devono essere usati quando più tardi compilerete altri pacchetti, poiché questi sono quelli che corrispondono ai file codice-oggetto delle librerie. Copiando gli header, assicuriamo che questi rimangano disponibili se voi più tardi aggiornate il kernel.

Notate che è perfettamente corretto avere i sorgenti del kernel in /usr/src/linux, così come non avere i link simbolici /usr/include/{linux,asm}.