如何编译一个linux下的驱动模块(1)
2015-08-08 12:08
399 查看
直接写Makefile 文件(假设要编译的文件为hello.c) 1 ifneq ($(KERNElRELEASE),) 2 obj-m := hello.o 3 else 4 obj-m := hello.o 5 KERNELDIR ?= /lib/modules/$(shell uname -r)/build 6 PWD := $(shell pwd) 7 8 default: 9 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 10 endif 第一个ifeq ($(KERNELRELEASE),)目前,并无用处,它的由来是指在Linux源码根目录下的Makefile编译内核时,KERNELRELEASE宏会被定义,那么如果是从源码根目录开始的make则会将myhello.o模块编译进内核。 KERNELDIR ?= /usr/src/$(shell uname -r) ,这句是对KERNELDIR进行赋值,这个变量是后面我们用到的指代内核源码目录用的。 PWD := $(shell pwd),这句是对PWD变量进行赋值,作用是将$(shell pwd)的返回结果既求得当前目录的路径赋值给PWD,这个变量我们在后面指代我们要编译的驱动程序所在的位置。 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 这句是Makefile的规则:这里的$(MAKE)就相当于make,-C 选项的作用是指将当前工作目录转移到你所指定的位置。“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成ko文件。 |
相关文章推荐
- linux中安装软件
- CPU性能统计数据及Linux监控工具使用
- CentOS6.3文字界面下使用yum安装Gnome桌面
- linux安装jdk
- linux man和--help的区别
- linux socket常用函数以及使用顺序
- Linux安装vmstat
- 理解Linux的硬连接与软连接
- Linux 前后台程序
- 配置使通过Xmanager xdmcp远程连接linux
- fedora20下面 dnw for linux 安装配置
- #每日Linux小练习#05 awk-好用的数据处理工具
- linux系统的文件和文件类型
- Linux在应用层通过mmap映射后,读写寄存器
- CentOS开启FTP及配置用户
- Linux下中文显示乱码问题
- 我是菜鸟:hadoop环境的搭建(LINUX)
- centos5.8本地安装yum资源,安装软件包
- mips-openwrt-linux-gcc test_usbsw.c -o usbsw 编译问题
- linux 下一个 jira-6.3.6 组态 皴 翻译 迁移数据库