编译内核模块

来源:互联网 发布:凯文考试软件 编辑:程序博客网 时间:2024/06/04 00:20

今天编译了内核模块,内核模块和应用程序的编译有很大的差异,应用程序我一般就直接arm-linux-gcc就ok了,但是内核模块不行,内核模块对内核的依赖很强,所以必须用makefile文件来编译。

        obj-m :=hello.o
KRNELDIR :=/home/ltj/6410kernel/linux-3.0.1(这里的内核路径为已经编译好的板子上的内核路径)
CROSS_COMPILE =/home/ltj/armtools/usr/local/arm/4.3.2/bin/arm-linux-(编译器路径)
CC :=$(CROSS_COMPILE)gcc(指定arm-linux-gcc)
LD :=$(CROSS_COMPILE)ld(指定arm-linux-ld)
PWD :=$(shell pwd)
all:
        make -C $(KRNELDIR) M=$(PWD) modules  
        
.PHONY :clean
clean:
        rm -rf *.o *ko

说到了makefile就说说这次接触到的makefile变量,变量有自定义变量,已定义变量,自动变量。自定义变量大家都清楚,就是自己定义的,如CROSS_COMPILE :=/home/ltj/armtools/usr/local/arm/4.3.2/bin/arm-linux-,变量定义以后,就不用再写等号后面的了。直接写$(CROSS_COMPILE)就可以代替。已定义变量就是makefile已经定义好的变量,可以直接用。自动变量还没弄清楚,以后再加入。

这个makefile编写好了之后直接make就会生成板子上可以加载的.ko文件。

0 0