Я пытался скомпилировать chardev.c
из этого учебника , используя следующее Makefile
:
obj-m := chardev.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default :
$(MAKE) -C $(KDIR) M=$(PWD) modules
Я получил правильный вывод, и он работает нормально, пока я make
в Ubuntu 10.04 LTC:
make -C /lib/modules/2.6.32-33-generic-pae/build M=/home/noge/Desktop/driver- tutorial/IOCTL_example/ioctl_eclipse modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-33-generic-pae'
Building modules, stage 2.
MODPOST 1 modules
LD [M] /home/noge/Desktop/driver-tutorial/IOCTL_example/ioctl_eclipse/chardev.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-33-generic-pae'
Однако, когда я передаю те же файлы на BeagleBoard , который работает под управлением Angstrom и выполняет make CROSS_COMPILE=arm-angstrom-linux-gnueabi-
, я получаю следующую ошибку:
root@beagleboard:~/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
отличается для Ubuntu и Angstrom:
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
Короче, почему ошибка при выполнении make
в Beagle Board под управлением Anstrom?
Спасибо за любую помощь ..!
Обновление:
Содержимое 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
, но источник ядра, полученный от здесь , имеет версию 2.6.22.18
.
Возможно ли получить неправильный исходный код ядра, который вызывает это?