当前位置: 技术问答>linux和unix
求助,简单驱动的makefile
来源: 互联网 发布时间:2016-10-17
本文导语: ifneq ($(KERNELRELEASE),) obj-m := hello.o else KBUILD := /lib/modules/`uname -r`/build modules: make -C $(KBUILD) M=$(shell pwd) modules clean: rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c rm -rf .tmp_versions endif 整个makefile大概是...
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KBUILD := /lib/modules/`uname -r`/build
modules:
make -C $(KBUILD) M=$(shell pwd) modules
clean:
rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -rf .tmp_versions
endif
整个makefile大概是这样子的。
可是。。。看不懂!有耐心的高手给大概讲解一下?可以吗?
谢啦!
obj-m := hello.o
else
KBUILD := /lib/modules/`uname -r`/build
modules:
make -C $(KBUILD) M=$(shell pwd) modules
clean:
rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -rf .tmp_versions
endif
整个makefile大概是这样子的。
可是。。。看不懂!有耐心的高手给大概讲解一下?可以吗?
谢啦!
|
make -C $(KBUILD) M=$(shell pwd) modules
-C 跳转到 KBUILD 目录执行 Makefile
M=$(shell pwd) 定义变量M,值为 pwd 的执行结果,即当前目录的绝对路径
最后的 modules 意思是 “执行 KBUILD 中的 Makefile 时直接执行 modules 下面的命令”。
你打开 KBUILD 中的 Makefile,应该能够找到 modules 的位置的。
......
modules:
(TAB)......
......
-C 跳转到 KBUILD 目录执行 Makefile
M=$(shell pwd) 定义变量M,值为 pwd 的执行结果,即当前目录的绝对路径
最后的 modules 意思是 “执行 KBUILD 中的 Makefile 时直接执行 modules 下面的命令”。
你打开 KBUILD 中的 Makefile,应该能够找到 modules 的位置的。
......
modules:
(TAB)......
......
|
KBUILD := /lib/modules/`uname -r`/build
这个KBUILD里面装的是什么东西呀?
这是内核源代码的目录,类似于/lib/modules/2.6.27/build
还有$(shell pwd)这个变量是什么意思?作用是什么?
得到当前的目录,也就是hello.c和这个Makefile所在的目录
这个KBUILD里面装的是什么东西呀?
这是内核源代码的目录,类似于/lib/modules/2.6.27/build
还有$(shell pwd)这个变量是什么意思?作用是什么?
得到当前的目录,也就是hello.c和这个Makefile所在的目录
|
这个得看你的代码了,
也许在某个 子Makefile 中被使用
也许在某个 ShellScript 中被使用