linux2.6内核模块编译的makefile模板
来源:互联网 发布:淘宝编辑软件 编辑:程序博客网 时间:2024/05/16 06:09
linux2.6内核模块编译的makefile模板
因为要写kernel modules,看了很多相关makefile的文章,都不能很好的实现多文件的模块编译,所以自己写了一个makefile,支持多文件,支持多目录,自己感觉比较方便,放在工程中就可以用了。
文件由两个部分组成: Makefile和objects.mk
使用方法:
将Makefile和objects.mk放在你工程的主目录中就可以了
Makefile内容如下:
___________________________
#Makefile for build kernel ( kernel's version >=2.4 )
#auother: haozi
#date: 06/08/2005 20:48:20
MDIR = drivers/misc
EXTRA_CFLAGS = -DEXPORT_SYMTAB
CURRENT = $(shell uname -r)
KDIR = /lib/modules/$(CURRENT)/build
PWD = $(shell pwd)
DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR)
#最终目标 ,这里是唯一需要自己修改的,将tacm改成你自己的模块名称就可以了。
TARGET = tacm #on
#导入依赖目标文件
-include objects.mk
#模块编译
obj-m := $(TARGET).o
$(TARGET)-objs := $(USER_OBJS)
all: $(TARGET)-build
$(TARGET)-build:
@echo 开始编译$(TARGET)内核模块...
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
@echo 成功编译$(TARGET)内核模块...
rebuild : clean-all all
#模块安装
ifneq (,$(findstring 2.4.,$(CURRENT)))
install:
su -c "cp -v $(TARGET).o $(DEST) && /sbin/depmod -a"
else
install:
su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"
endif
#清理所有目标(包括临时文件,中间目标和最终目标)
clean-all:
@echo 正在清理所有目标文件**[包括临时文件,中间目标和最终目标]**...
$(if $(shell find . -name '*.o' -print), -rm -f $(shell find . -name '*.o' -print))
$(if $(shell find . -name '*.ko' -print),-rm -f $(shell find . -name '*.ko' -print))
$(if $(shell find . -name '.*.flags' -print),-rm -f $(shell find . -name '.*.flags' -print))
$(if $(shell find . -name '.*.cmd' -print),-rm -f $(shell find . -name '.*.cmd' -print))
$(if $(shell find . -name '.*.cmd' -print),-rm -f $(shell find . -name '*.mod.c' -print))
@echo 已成功清理所有目标文件**[包括临时文件,中间目标和最终目标]**...
clean-tmp:
@echo 正在清理所有中间文件**[不包括*.ko文件]**...
$(if $(shell find . -name '*.o' -print), -rm -f $(shell find . -name '*.o' -print))
$(if $(shell find . -name '.*.flags' -print),-rm -f $(shell find . -name '.*.flags' -print))
$(if $(shell find . -name '.*.cmd' -print),-rm -f $(shell find . -name '.*.cmd' -print))
$(if $(shell find . -name '.*.cmd' -print),-rm -f $(shell find . -name '*.mod.c' -print))
@echo 已成功清理所有中间文件**[不包括*.ko文件]**...
-include $(KDIR)/Rules.make
________________________
objects.mk:
_________________________
FILES := $(shell find . -name '*.c' -print)
SOURCES := $(filter-out %.mod.c , $(FILES))
OBJS := $(patsubst %.c,%.o, $(SOURCES))
USER_OBJS := $(filter %.o, $(OBJS))
export USER_OBJS
export OBJS
export SOURCES
__________________________
希望可以给正在编写linux内核模块的朋友带来方便
我是在fc4下的,内核版本2.6.11, >2.4的内核版本都应该是支持的,不过不知道其他的发行版怎么样,我只在fc4,fc3 下用过,算是一个参考吧 :)
- linux2.6内核模块编译的makefile模板
- linux 内核模块编译的Makefile模板
- linux2.6内核模块的编译
- 内核模块编译Makefile模板
- 两个编译2.4与2.6内核模块的Makefile 模板
- 两个编译2.4与2.6内核模块的Makefile 模板
- linux2.6内核下驱动模块的编译方法
- Linux内核模块编译----Makefile 模板
- Linux2.6下内核模块编译
- 编译内核模块的makefile
- 编译内核模块的makefile
- 编译内核模块的Makefile
- 编译内核模块的Makefile
- linux2.4与2.6内核模块的Makefile模版
- Linux2.6内核的Makefile语法分析
- 编译Linux2.6.x内核驱动的makefile文件
- 编译Linux2.6.x内核驱动的makefile文件
- 在Linux2.6内核(CentOS)中编译内核模块的一个例子
- 拉格朗日Lagrange插值多项式
- tar 解压缩命令
- 如何重载ext.gird里的数据
- Python 之字典小结
- c语言用递归的方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
- linux2.6内核模块编译的makefile模板
- Android: 绘制的文本如何排版
- ThreadLocal的内存泄露
- js1
- autocomplete的使用
- c/c++中指针学习的两个绝好例子
- Synergy – 教你在局域网中用一套键盘/鼠标控制多台电脑
- Javascript 最简滑动弹出和隐藏DIV(消息提示)
- 在采集程序中,定时器函数和WindowProc函数存在的一些问题