2013-01-09 2 views
5

x86 우분투 리눅스에서 ARM 커널 모듈을 컴파일하고 싶습니다. 커널 소스를 다운로드했습니다 (대상 ARM 시스템은이 Linux 버전을 실행하므로 Linux 2.6.26). 그리고 저는 팔 크로스 컴파일러를 apt-get'ed했습니다. 보시다시피. 다음x86에서 ARM 용 리눅스 커널 모듈을 컴파일 우분투

[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 

내 커널 모듈에 대한 메이크 (hello_module.ko) (제 86 기계) 컴파일하고이 잘 작동합니다.

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* 

지금은 ARM 리눅스 2.6.26의 커널 모듈을 크로스 컴파일하기 위해 메이크 작업 내 원래의 변화에 ​​무엇을해야합니까?

그리고 whats 리눅스 소스와 리눅스 헤더 소스의 차이점은 무엇입니까? 나는 커널을 컴파일 할 때마다 이것을 보았지만 여전히 이해하지 못합니다. 당신이 당신의 hello_module로 이동하기 전에

내가 어떤 기사를 검색 좀하지만 늘 도움이 ...

+0

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

답변

3

나는 커널 소스를 구축하는 게 좋을 것. 그건 당신의 팔을 교차 컴파일러 설치가 잘되었는지 확인합니다.

export CROSS_COMPILE=arm-linux-gnueabi- 

export ARCH=arm 

또한 PATH 크로스 툴체인 설치시 업데이트해야하므로 도구는 만들어 실행에서 찾을 수 있습니다

여러 번, 툴체인 문제는 이러한 필요으로 추적. CodeSourcery 설치는이를 대신 할 수 있지만 PATH 업데이트는 로그 아웃/로그인 후에 만 ​​적용됩니다.

위에서 콘솔 출력을 얻는 방법이 명확하지 않습니다. 문제가 남아 있다면, 나는 이것들과 같은 것을하고, 결과를 코멘트로 게시 할 것을 제안 할 것입니다.

printenv | grep PATH 

whereis arm-linux-gnueabi-gcc 

which arm-linux-gnueabi-gcc 
+0

청결하게'잊고; '- 여기서' '은 플랫폼의 기본 설정입니다. 소스 트리가 원시 커널을 빌드하는 데 사용 된 적이있는 경우 특히 필요합니다. – marko

관련 문제