2013-01-09 20 views
5

Ich möchte ein ARM-Kernel-Modul auf meinem X 86 Ubuntu Linux kompilieren. Ich habe Kernel-Quelle heruntergeladen (Linux 2.6.26 seit Ziel-ARM-Maschine diese Linux-Version ausgeführt wird). und ich apt-get'ed Arm Cross-Compiler. Wie du siehst.Kreuz kompilieren Linux-Kernel-Modul für ARM auf 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 

finden Sie das Makefile für meine Kernel-Modul (hello_module.ko) Kompilation (für meine x86-Maschine) und das funktioniert gut.

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* 

jetzt, was muss ich arbeiten Makefile um ein Kernel-Modul für Linux 2.6.26 für ARM zu überqueren in meiner ursprünglichen ändern zu kompilieren?

und was ist der Unterschied zwischen Linux-Quelle und Linux-Header-Quelle? Ich habe diese jedes Mal gesehen, wenn ich einige Kernel-Sachen kompiliere, aber ich verstehe es immer noch nicht.

Ich habe einige Artikel gegoogelt aber es wird nicht helfen ...

+0

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

Antwort

3

Ich würde vorschlagen, dass die Kernel-Quelle bauen, bevor Sie Ihren hello_module bewegen. Das wird bestätigen, dass Ihre Arm Cross Compiler-Installation OK wurde.

Viele Male, Spurentoolchain Probleme wieder diese benötigen:

export CROSS_COMPILE=arm-linux-gnueabi- 

export ARCH=arm 

Auch PATH bei der Cross-Toolchain Installation aktualisiert werden muss, so können die Werkzeuge aus der Ausführung machen finden. Die Installation von CodeSourcery kann das für Sie erledigen, aber die PATH-Aktualisierung wird erst nach dem Abmelden/Anmelden wirksam.

Es ist mir nicht klar, wie Sie Ihre Konsolenausgabe oben bekommen haben. Wenn Probleme bleiben, würde ich vorschlagen, etwas wie diese zu tun und das Ergebnis als Kommentar zu veröffentlichen.

printenv | grep PATH 

whereis arm-linux-gnueabi-gcc 

which arm-linux-gnueabi-gcc 
+0

Nicht zu vergessen make clean; make '- wo' 'ist die Standardkonfiguration für Ihre Plattform. Dies ist besonders notwendig, wenn der Quellbaum jemals zum Erstellen eines nativen Kernels verwendet wurde. – marko

Verwandte Themen