2014-01-07 2 views
4

ARM 리눅스 용 커널 모듈을 크로스 컴파일하는 방법을 모색 중입니다. 툴체인을 설치했습니다. 하지만 다양한 방법으로 얻지 못하는 것이 있습니다. 빌드하고자하는 모듈은 gadgetfs입니다.크로스 컴파일 리눅스 커널 모듈

내 호스트의 커널 버전이 3.5.0-34-generic 인 대상에 동안의 3.6.9-0.1

이제 커널 소스 또는 헤더가 실제로 어디에서 다운로드하여 설치하고,해야 할 일을? kernel.org에서 linux-3.6.9.tar.bz2을 다운로드하고 추출했습니다. drivers/usb/gadget/에서 는 Makefile 나는 그것에이 라인을 추가 할 필요가이 사이트에 따르면, 다음 실행 make있다 :

KDIR := /lib/modules/`uname -r`/build 
PWD := `pwd` 
obj-m := dummy_hcd.o gadgetfs.o 
default: 
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 

하지만 난과 함께 uname -r 대체 무엇을해야합니까? 왜냐하면 내 호스트의 커널 버전을 줄 것이기 때문입니다. 하지만 내 목표 버전이 다릅니다. /lib/modules/3.6.9 폴더는 어디에 있습니까? CROSS_COMPILEARCH이 모두 설정됩니다.

답변

3

Linux에 stable binary API이 없으므로 호스트 컴퓨터에서 대상에 맞는 올바른 버전의 Linux를 컴파일 (또는 미리 컴파일 된 다운로드)해야합니다. 호스트의 커널 버전은 적합하지 않습니다.

해당 모듈의 디렉토리에

make -C kernel_build_dir M=`pwd` ARCH=arm CROSS_COMPILE=<...> modules 

를 통해 모듈을 구축 할 수 있습니다 호스트에 가능한 대상 빌드를 가진 후.

관련 문제