0

다음 Makefile을 사용하여이 tutorial에서 chardev.c을 컴파일하려고했습니다.동일한 Makefile이 Ubuntu 10.04 LTS에서 성공했지만 Beagle Board의 Angstrom에서 실패했습니다.

Angstrom을 실행하는 BeagleBoard에 같은 파일을 전송하고 make CROSS_COMPILE=arm-angstrom-linux-gnueabi-을했는데 다음 오류가 발생했습니다.

[email protected]:~/Desktop/noge/C-tutorials/hello_world# make CROSS_COMPILE= 
arm-angstrom-linux-gnueabi-              
make -C /lib/modules/2.6.32/build M=/home/root/Desktop/noge/C-tutorials/hels 
make[1]: Entering directory `/usr/src/linux-2.6.32/2.6_kernel'     
Makefile:1448: *** mixed implicit and normal rules. Stop.      
make[1]: Leaving directory `/usr/src/linux-2.6.32/2.6_kernel'     
make: *** [default] Error 2 

이것이 원인인지 확실하지 않지만 make 버전이 있는지 확인했습니다. 우분투 및 옹스트롬과 다른 :

Angstrom's version: 
GNU Make 3.82                 
Built for arm-angstrom-linux-gnueabi 

Ubuntu's version: 
GNU Make 3.81 
This program built for i486-pc-linux-gnu 

즉, Anstrom을 실행하는 Beagle Board에서 make를 수행하는 동안 왜 오류가 발생합니까?

어떤 도움을 주셔서 감사합니다 ..!

업데이트 : Makefile의 내용은 1448 줄 근처에 있습니다.

1447 # Modules 
1448 /%/: prepare scripts FORCE 
1449 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 
1450 $(build)=$(build-dir) 
1451 %.ko: prepare scripts FORCE 
1452 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 
1453 $(build)=$(build-dir) $(@:.ko=.o) 
1454 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 

커널 버전에 대한 확인을했는데 Linux beagleboard 2.6.32 #3 PREEMPT Thu Jun 23 09:56:19 CEST 2011 armv7l GNU/Linux이 있는데 here에서 얻은 커널 소스는 2.6.22.18 버전입니다. .

이 문제의 원인이되는 잘못된 커널 소스 코드를 가져 오는 것이 가능합니까?

답변

0

Makefile에 문제가 없지만 규칙 이름 충돌이있을 수 있습니다. /usr/src/linux-2.6.32/2.6_kernel/Makefile의 1448 행은 무엇입니까?

관련 문제