2013-01-09 8 views
5

Chcę przekreślić kompilację modułu jądra ARM na moim Ubuntu x86 Linux. Mam downloded źródło jądra (linux 2.6.26, ponieważ docelowa maszyna ARM działa z tą linuxową wersją). i I apt-get'ed kompilatora krzyża ramienia. jak widzisz.Kompilacja krzyżowa modułu jądra Linux dla ARM na Ubuntu x86

[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 

Poniżej znajduje się Makefile dla mojego modułu jądra (hello_module.ko) kompilacja (na moim komputerze x86) i to działa dobrze.

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* 

teraz, co muszę zmienić w moim oryginalne Makefile pracy w celu przekroczenia skompilować moduł jądra Linux 2.6.26 dla ARM?

i jaka jest różnica między źródłem linux a źródłem nagłówka linux? Widziałem je za każdym razem, gdy kompilowałem trochę rzeczy z jądra, ale nadal nie dostałem tego.

Mam googled kilka artykułów, ale to przyzwyczajenie pomóc ...

+0

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

Odpowiedz

3

Sugeruję budowę źródła jądra przed przeniesieniem do hello_module. To potwierdzi, że instalacja kompilatora krzyża ramienia przebiegła prawidłowo.

Wiele razy, problemy toolchain prześledzić wstecz na te potrzeby:

export CROSS_COMPILE=arm-linux-gnueabi- 

export ARCH=arm 

także PATH musi być aktualizowany w czasie instalacji cross-toolchain, więc narzędzia można znaleźć od wykonującego zrobić. Instalacja CodeSourcery może to dla ciebie zrobić, ale aktualizacja PATH działa tylko po wylogowaniu/zalogowaniu.

Nie jest dla mnie jasne, w jaki sposób uzyskałeś dane wyjściowe z konsoli powyżej. Jeśli problemy pozostaną, sugeruję zrobienie czegoś podobnego i opublikowanie wyniku jako komentarza.

printenv | grep PATH 

whereis arm-linux-gnueabi-gcc 

which arm-linux-gnueabi-gcc 
+0

Nie zapominając 'make clean; make '- gdzie' 'jest domyślną konfiguracją dla twojej platformy. Jest to szczególnie konieczne, jeśli drzewo źródłowe zostało kiedykolwiek użyte do zbudowania natywnego jądra. – marko