linux驱动开发-模块多文件编译
2017-07-15 15:51
513 查看
原文:http://blog.csdn.net/mj5742356/article/details/31751079
多个文件的模块的编译,下面是一个简单多文件编译的示例,能够较清楚的告诉大家如何进行多文件模块编译
多文件编译的关键在于makefile文件,下面简要介绍一下。
obj-m 是告诉makefile最终的编译目标是什么。比如obj-m = test.o 那么最终编译的模块镜像就是test.ko;
$(TARGET)-objs 是告诉makefile 最终的编译目标需要依赖哪些目标文件,再利用makefile的隐式规则生成所需的目标文件。最终链接为模块目标文件。
多个文件的模块的编译,下面是一个简单多文件编译的示例,能够较清楚的告诉大家如何进行多文件模块编译
//a.c #include <linux/init.h> #include <linux/module.h> #include "b.h" MODULE_LICENSE("GPL"); static __init int a(void) { led_on(); return 0; } static __exit void b(void) { led_off(); } module_init(a); module_exit(b);
//b.c #include <linux/module.h> #include "b.h" void led_on(void) { printk("%s %d LED ON\n", __func__, __LINE__); } void led_off(void) { printk("%s %d LED OFF\n", __func__, __LINE__); }
//b.h #ifndef _B_H_ #define _B_H_ void led_on(void); void led_off(void); #endif // _B_H_
#Makefile TARGET := test obj-m = $(TARGET).o $(TARGET)-objs = a.o b.o #KERN = /share/arm/linux-3.2 KERN = /lib/modules/`uname -r`/build/ all: make -C $(KERN) M=`pwd` modules clean: make -C $(KERN) M=`pwd` modules clean rm -rf modules.order
多文件编译的关键在于makefile文件,下面简要介绍一下。
obj-m 是告诉makefile最终的编译目标是什么。比如obj-m = test.o 那么最终编译的模块镜像就是test.ko;
$(TARGET)-objs 是告诉makefile 最终的编译目标需要依赖哪些目标文件,再利用makefile的隐式规则生成所需的目标文件。最终链接为模块目标文件。
相关文章推荐
- linux驱动开发-模块多文件编译
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- linux驱动开发内核模块编译——Makefile入门
- linux 内核模块的编译(用于驱动开发)
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响—linux2.4单独编译驱动模块
- Linux设备驱动开发详解-第4章(二)-模块参数
- Linux2.6 DM9000驱动模编译为模块
- 慢慢学Linux驱动开发,第六篇,2.6.38版本下LDD3驱动的编译
- linux启动时对编译进内核驱动模块的加载
- [Linux驱动开发] 根文件系统制作
- ubuntu11.10下为android模拟器编译内核到为android开发内核模块(.ko文件)全过程纪实
- “手把手教你学linux驱动开发”OK6410系列之01---模块编程 .
- linux 驱动 编译加载 , 程序搬移到目标板,驱动源码和头文件位置
- [Linux驱动开发] cramfs文件系统制作及移植
- Linux 2.6 内核驱动模块的编译和加载
- linux、内核源码、内核编译与配置、内核模块开发、内核启动流程
- linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转)
- UBuntu8.10 开发第一个基本Linux 驱动内核模块
- Linux 驱动开发Camera.log文件学习