2012-07-26 3 views
1

내 모듈 빌드의 출력을 리다이렉트하여 소스 아티팩트를 분리하고 싶습니다. 이 모듈의 출력을 내 소스 디렉토리에 일어나는 것을 제외하고는 제대로 작동리눅스 모듈 빌드 출력 리디렉션

obj-m += hello-1.o 

all: 
    make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) modules 

clean: 
    make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) clean 

: 같은

내 메이크 보인다. 나는

ERROR: Kernel configuration is invalid. include/generated/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it.

WARNING: Symbol version dump /work/development/linux/driver/blah/Module.symvers is missing; modules will have no dependencies and modversions.

난이 일부 출력 파일에서이 있다는 사실에서 유래 가정 ...이 같은 빌드에 실패하고 각 줄에 {내 출력 dirctory의 경로} O =를 추가했지만, 모듈 빌드에서 사용되는 커널 빌드 및 "O ="로 출력 디렉토리를 변경하면 그와 충돌합니다.

기존 빌드 인프라를 사용하여이를 수행하는 방법이 있습니까?

+0

귀하의 질문은 불분명하지만, 메이크 파일은'빌드 그 어디도 .../kernel'는 소스 디렉토리'추측하고있어 모듈 '이 상주합니다. 그 makefile을 보지 않고서는 우리가 당신에게 특별한 대답을 줄 수는 없습니다. 제품을 다른 곳으로 옮기려면 사소한 일이거나 실제 고통이 될 수 있습니다. – Beta

+0

@ 베타 명확성이 부족하여 죄송합니다. 커널은 실제로 /work/TI-Android.../kernel에 있습니다. 내 모듈 소스는 위에 나열된 makefile을 실행하는/work/mymodule에 있습니다. –

답변

0

the module system에 대한 문서를 보면 모양이 좋지 않습니다. 아마도 .config을 빌드 디렉토리에 복사하고 make oldconfig && make modules-prepareO=으로 설정하면됩니다.


또 다른 디렉토리에서 make을 실행하면 어떻게됩니까?

/somewhere/else$ make -C /path/to/kernel ARCH=arm CROSS_COMPILE=arm-eabi- M=/your/module/dir modules 
+0

불행하게도, 'other'디렉토리에서 make를 실행했을 때 출력 결과는 여전히 모듈 소스 디렉토리에 출력됩니다. 또한 make oldconfig를 시도하고 prepare (modules-prepare가 유효한 대상이 아닌 것 같습니다)하면 커널 디렉토리가 깨끗하지 않다고 불평합니다. –

+0

'.config'를 저장하고, 커널 디렉토리를 청소 한 다음'O ='set을 사용하여 준비를 했습니까? 더러운 트리에서 소스를 벗어난 빌드를 허용하지 않으면 적어도 automake와 kbuild는 일반적입니다. –

+0

나는 그것을 줄 것이다. –

0

이 메이크 쿼리 해결할 수

obj-m += hello-1.o 

all: 
make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) modules_install INSTALL_MOD_PATH=<output directory for modules> 

clean: 
make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) clean