编写驱动的makefile使要
2019独角兽企业重金招聘Python工程师标准>>>
一般在编译linux驱动时,我们需要在交叉编译环境中进行编译,所以要在编译环境中搭建交叉编译环境。编写驱动的makefile使需要制定驱动依赖的内核的路径,makefile写法如下:
KERN_DIR = /xxx/xxx/linux-2.6.22.6
all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
obj-m += buttons.o
KERN_DIR=/XXX/XXX/linux-2.6.22.6,这句是对KERN_DIR进行赋值,确定后面使用内核源码时的内核源码路径。
make -C $(KERN_DIR) M='pwd' modules,这句是makefile的规则:-C选项的作用是指将当前工作目录转移到你所指定的位置,当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile。
M=$(PWD) 表明然后从内核makefile中返回到当前目录继续读入、执行当前的Makefile。M是内核根目录下的Makefile中使用的变量,"M="选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules命令中加入"m=dir",程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成ko文件。M=‘pwd’这句话是用来制定我们编译的驱动的路径。这句可以这样来写PWD:=$(shell pwd) M='PWD'。
================================================================================
当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile;M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。
当从内核源码目录返回时,KERNELRELEASE已被被定义,kbuild也被启动去解析kbuild语法的语句,make将继续读取else之前的内容,其为kbuild语法的语句, 指明模块源码中各文件的依赖关系,以及要生成的目标模块名。
转载于:https://my.oschina.net/u/920274/blog/2986594
编写驱动的makefile使要相关推荐
- NanoPi NEO Air使用十:自己编写驱动来控制LED
NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...
- 基于驱动框架编写驱动代码
前言:基于上一个博文对 linux驱动的认知的了解,那么现在开始我们正式来进入学习基于驱动框架来编写驱动代码,那么接下来我们先来看看一个最简单的驱动框架代码 一.字符设备驱动框架代码与应用层代码 驱动 ...
- i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动
一.概述 Linux 内核编译流程如下: 1.配置 Linux 内核. 2.编译 Linux 内核. 说明:进入 Linux 内核源码,使用 make help 参看相关配置. 二.make menu ...
- 【详解一】Nand Flash 编写驱动之前要了解的知识
1.1. 一些相关的名词的解释 1.1.1. Non-Volatile Memory非易失性存储器 NVM,即NV (RAM)Memory,断电数据也不会丢失的存储器,比如Nand Flash,Nor ...
- 基于框架编写驱动代码
操作驱动的上层代码(pin4test) #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...
- 微软通信winusb —— 不再为你的usb设备编写驱动
最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--微软通信 [blog.csdn.net/lanmanck] 曾几何时我们找工作还发现有个驱动工程师职位,薪月也不低,没触接过的人代码压根 ...
- linux内核源码只有makefile文件没有c文件,linux内核代码的编写初步以及makefile的配置...
在linux内核代码开发中,头文件不能包含标准C头文件,只能采用GNC标准 而且内核开发中没有main函数,只有init 和 exit ,这是每个内核模块中必须要包含的函数模块. 在GNU C标准中, ...
- visual studio 2019 + WinDDK 7600.16385.0编写驱动
驱动版本WinDDK 7600.16385.0 IDE:visual studio 2019 新建空白项目 配置类型从exe改为生成文件 配置完后,配置属性中就只剩基础配置了,没有C/C++.链接器等 ...
- winusb —— 不再为你的usb设备编写驱动
[blog.csdn.net/lanmanck] 曾几何时我们找工作还发现有个驱动工程师职位,月薪也不低,没接触过的人代码压根看不懂. 今天可好了,如果不太追求差异化,不用驱动也能让系统与USB设备通 ...
最新文章
- 美媒:谷歌巨型数据中心和美国小镇“抢水”
- 基于Vue+ElementUI的后台管理系统开发的总结
- hdu - 2667 Proving Equivalences(强连通)
- Qt:Windows编程—Qt实现进程管理
- sklearn 特征选择与特征抽取 —— feature_selection、feature_extraction
- ubuntu,win10 释放IP,重新获取IP
- 3dsmax给物体贴图之后,物体不显示贴图的解决办法
- Java onvif协议,Java onvif协议通用协议获取rtsp地址
- 【golang】kafka
- Ubuntu16.04安装网易云音乐后打不开
- 运行linux浏览器,开源也疯狂:5款Linux浏览器推荐
- System.DateUtils Simple trimming functions部分
- OpenCV教程(5)函数整理
- RFID建筑工地人员考勤管理解决方案——铨顺宏FUWIT
- Java开发必备:java帮助文档网址下载或在线帮助
- 一、Groovy语法(一):基础语法
- Eric靶机渗透测试
- Quectel EC600N-CN 中尺寸物联网首选LTE Cat 1模块[移远通信]
- C++开发者的机会在哪里?盘点C/C++就业方向
- 记一次成功把Vue2后台项目改造成Vite2的踩坑经历
热门文章
- python csv库,Python 中导入csv数据的三种方法
- debian android环境搭建,Debian类系统环境变量的配置
- Java的scjp_java scjp
- swiper 定义放多少张图片_swiper轮播问题之二:默认显示3张图片,中间显示全部两边显示部分...
- delphi listview动态添加图片_网站图片如何优化适合收录
- 时间立即同步命令_Redis复制:主从同步
- 利用startup.m文件设置matlab的Current Folder的默认文件夹
- 使用PlanAhead查看Virtex-7系列FPGA的底层架构
- Scala函数的调用
- LVS集群---做前端调度器搭建使用