PDA

View Full Version : Compilare un kernel x86_64 su un sistema a 32 bit


shodan
13-05-2005, 09:07
Ciao a tutti,

sono 2 giorni che sto cercando di capire come sia possibile compilare un kernel per x86_64 (ho un A64 3000+ per le mani) partendo da una distribuzione a 32 bit. Mi è parso di capire che occorre fare una cross-compilation utilizzando una versione recente di gcc (>= 3.4); non mi è ben chiaro invece se devo prima costruirmi un ambiente a 64 bit facendo una directory con tutto il necessario e poi facendoci un chroot.

Ho iniziato la configurazione del nuovo kernel dando il comando "make ARCH=x86_64 CROSS_COMPILE=x86_64-linux- menuconfig"; il file di configurazione generato contiene correttamente la variabile "ARCH=x86_64". Ho creato un link a gcc-3.4 chiamandolo x86_64-linux-gcc dato che usando la variabile "CROSS_COMPILE=x86_64-linux-" il make cerca di trovare il compilatore chiamato nome_variabile+"gcc".
Ho quindi dato il comando "make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-" per iniziare la compilazione ma la compilazione si interrompe subito dandomi il messaggio "cripts/mod/empty.c:1: error: code model `kernel' not supported in the 32 bit mode".
Non riesco a capire quale sia il problema, dato che in rete c'è una confusione incredibile sull'argomento...

Potete indicarmi dove sbaglio e cosa posso fare per correggermi?

Grazie a tutti! :)

ilsensine
13-05-2005, 09:13
Tutto corretto tranne questo:
Ho creato un link a gcc-3.4 chiamandolo x86_64-linux-gcc-
Ti serve un compilatore incrociato, ovvero un gcc compilato per essere eseguito su una architettura generando codice per un'altra architettura. Creando un link non risolvi niente, in quanto il tuo gcc rimane host i386 per un target i386.

ilsensine
13-05-2005, 09:14
Qui
http://home.ix.netcom.com/~ejohns/glfs-amd64/intro.html
si parla di come costruire una toolchain con un cross compiler per x86_64. Se ne trovi uno già fatto è meglio, il lavoro è lungo.

shodan
13-05-2005, 10:53
Ok, vediamo se riesco!
Avevo trovato anche io qualcosa ieri in merito, ma poi mi sono detto: "ma non può essere così incasinato!" :D

Grazie mille ilsensine, meriti un monumento (se non altro per la pazienza di rispondermi! :p).

Ciao. :)