做了一個簡單的裝置驅動程式:
ARM_hello.c
#include <linux/module.h>static int hello_init(void){ printk("Hello, I am coming !\n"); return 0;}static void hello_exit(void){ printk("Goodbye, I Love Linux ! I Love ARM ! \n");}module_init(hello_init);module_exit(hello_exit);
Makefile:
#--------------------------for ARM----------------------------------CROSS_COMPILE := /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-CC :=$(CROSS_COMPILE)gccKERNEL_DIR := /opt/FriendlyARM/mini2440/linux-2.6.32.2#------------------------------------------------------------------obj-m :=ARM_hello.oPWD := $(shell pwd)all:make -C $(KERNEL_DIR) M=$(PWD) modulesclean:rm -fr *.o *.ko *.mod.o *.mod.c .*.cmd *.order *.*s *~ .tmp*
執行
$ sudo make
出現如下錯誤:
ERROR: Kernel configuration is invalid. include/linux/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it.
網上都說是要編譯核心什麼,make menuconfig 什麼的,當時不敢隨便編譯核心,怕把這個系統搞死了。
後來,突然想起來手冊我沒有完全看完,於是去翻手冊,原來真的要編譯核心,這個核心是ARM的核心,因為需要在PC上製造出一個和ARM也一樣的核心編譯環境,也就是交叉編譯環境,所以,按照手冊,編譯了一下ARM的那個核心。
具體操作在我的另一篇博文中:交叉編譯環境之編譯核心階段各種錯誤