Linux2.6 模块的两种编译方式(2)


    1 KERDIR ?= /usr/src/kernels/2.6.9-5.EL-i686/
    2 PWD := $(shell pwd)
    3         obj-m := test.o
    4 default:
    5         $(MAKE) -C $(KERDIR) M=$(PWD) modules

这个Makefile文件是最简单例子。其中 第一句,变量KERDIR保存的是 内核源码树的位置;第二行是取得当前路径;第三行是确定编译目标
还有一个完美点的例子,优点是它可以区分出来自己是在内核源码树里面被编译的还是在源码树之外被编译的:


    [root@SingyeaLinux test]# vi Makefile
    1
    2 #如果已定义KERNELRELEASE,则说明是从内核构造系统调用的,因此可利用其内建语句。
    3 ifneq($(KERNELRELEASE),)
    4         obj-m :=test.o
    5 #否则,是直接从命令行调用的,这时要调用内核构造系统
    6 else
    7 KERNELDIR ?=/usr/src/kernels/2.6.9-5.EL-i686/
    8 PWD := $(shell pwd)
    9 Default:
    10 $(MAKE) –C $(KERNELDIR) M=$(PWD) modules
    11 endif


这段代码是我从老师那里抓过来的,没改。。。

OK,一切就绪,make 一下。看生成 test.ko了没有。生成了,那就不浪费你时间了,没有那就需要再看看啦。发mail给我,
或许会有点帮助 sigyea@163.com

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzyxgf.html