不修改Linux内核文件,直接用makefile编译驱动,是否要先把内核编译一遍?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不修改Linux内核文件,直接用makefile编译驱动,是否要先把内核编译一遍?相关的知识,希望对你有一定的参考价值。

不修改内核文件编译驱动模块:
建立一个名字为led的文件夹。把LED驱动源码micro2440_leds.c复制到该目录。在该目录下创建Makefile文件如下:

点击(此处)折叠或打开
obj-m := micro2440_leds.o
KERNEL_DIR ?= /home/samba/linux-2.6.32.2-micro2440
all:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
clean:
rm -f *.o *.ko *.mod.* *.order *.symvers

保存后,直接执行make,即可在当前目录下生成我们需要的驱动模块文件micro2440_leds.ko。

参考技术A 不需要重新编译内核。需要重新制作文件系统,如果你的文件系统是nfs挂载的,那么你只需要将
micro2440_leds.ko复制过去,然后insmod进去。
参考技术B 对于各大发行版来说,不需要重新编译kernel,只需要安装内核头文件即可。 参考技术C 安装内核头文件 编译成模块。

如何在linux下写makefile

最近一直在研究这个

首先可以手写makefile,需要你对makefile和需求有一定的了解,这种方法不推荐不详述
其次使用autotools工具,只需要把所需要最后编译生成的名字版本号还有源文件编写好,用autotools工具实现编译即可,具体使用方法网上有,不详述
然后可以使用qmake,具体使用如上
最后说一个yocto,这东西可以实现单独编译,不需要自己写makefile了,直接就帮你编好了
参考技术A Linux系统下makefile的作用把编写好的源文件进行编译与链接,makefile的基本格式如下: target… :prerequisite…(Tab键)command#格式解释target:生成的目标文件,可以是可执行文件,也可以是中间目标文件prerequisite:生成target所需要的文件com...

以上是关于不修改Linux内核文件,直接用makefile编译驱动,是否要先把内核编译一遍?的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux下写makefile

浅谈内核的MakefileKconfig和.config文件

浅谈内核的MakefileKconfig和.config文件

Linux内核移植入门

Hello world实例 | 解析内核的MakefileKconfig和.config之间的关联!

enc28j60网卡驱动模块添加进linux内核,Kconfig,Makefile配置过程