2013-01-09 18 views
5

Voglio compilare un modulo del kernel ARM sul mio x86 ubuntu linux. Ho scaricato il kernel source (linux 2.6.26 dato che la macchina ARM target sta eseguendo questa versione di linux). e il compilatore incrociato di braccio di apt-get'ed. come potete vedere.Compilare il modulo del kernel linux per ARM su x86 ubuntu

[email protected]:/var/www/module_test# arm-linux-gnueabi- 
arm-linux-gnueabi-addr2line arm-linux-gnueabi-cpp-4.5 
arm-linux-gnueabi-gcov-4.5 arm-linux-gnueabi-ld.gold 
arm-linux-gnueabi-ranlib  arm-linux-gnueabi-strip 
arm-linux-gnueabi-ar   arm-linux-gnueabi-elfedit 
arm-linux-gnueabi-gprof  arm-linux-gnueabi-nm 
arm-linux-gnueabi-readelf arm-linux-gnueabi-as 
arm-linux-gnueabi-gcc  arm-linux-gnueabi-ld 
arm-linux-gnueabi-objcopy arm-linux-gnueabi-size  
arm-linux-gnueabi-c++filt arm-linux-gnueabi-gcc-4.5 
arm-linux-gnueabi-ld.bfd  arm-linux-gnueabi-objdump 
arm-linux-gnueabi-strings 

seguito è riportato il Makefile per il mio modulo del kernel (hello_module.ko) compilazione (per la mia macchina x86) e questo funziona bene.

obj-m += hello_module.o 
KDIR := /lib/modules/$(shell uname -r)/build 
#PWD:=$(shell pwd) 

all: 
     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 

clean: 
     rm -rf *.o *.ko *.mod.* .c* .t* 

ora, che cosa devo cambiare il mio originale lavorare Makefile per attraversare compilare un modulo del kernel per Linux 2.6.26 per ARM?

e qual è la differenza tra origine linux e sorgente di intestazione linux? Ho visto questi ogni volta che compilo alcune cose del kernel ma non riesco ancora a capirlo.

Googled alcuni articoli, ma non ci vorrà aiutare ...

+0

http://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-host –

risposta

3

Io suggerirei di compilare il sorgente del kernel prima di spostare al vostro hello_module. Ciò confermerà che l'installazione del compilatore crossarm è andata bene.

Molte volte, i problemi della toolchain risalgono al bisogno di questi:

export CROSS_COMPILE=arm-linux-gnueabi- 

export ARCH=arm 

anche percorso deve essere aggiornato al momento dell'installazione di cross-toolchain, quindi gli strumenti possono essere trovati dal fare eseguire. L'installazione di CodeSourcery può farlo per te, ma l'aggiornamento PATH ha effetto solo dopo il logout/login.

Non è chiaro per me come hai ottenuto l'output della tua console sopra. Se i problemi persistono, suggerirei di fare qualcosa del genere e postare il risultato come commento.

printenv | grep PATH 

whereis arm-linux-gnueabi-gcc 

which arm-linux-gnueabi-gcc 
+0

Senza dimenticare 'make clean; make '- dove' 'è la configurazione di default per la tua piattaforma. Questo è particolarmente necessario se l'albero sorgente è mai stato usato per costruire un kernel nativo. – marko

Problemi correlati