[转载收藏] 驱动开发——编译正传
2007-06-19 13:58
519 查看
from: http://blog.csdn.net/phecg/archive/2007/01/13/1482191.aspx
我在前面也讲过了一些关于编译环境及工具的。在这里结合本例子我再说一下:
DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我学习的时候也没有过多的关注,我用的是2000的DDK,所以以下的所有内容都是针对2000 DDK的。
·准备工作
1、确定你已经安装了Visual C++
2、安装2000 DDK
3、安装2000 DDK成功后,在“开始”->“程序”里应该有“Development Kits”->“Windows 2000 DDK”的项目。
(注意一定要先安装好VC,然后才安装DDK,这个顺序决不能颠倒!!)
4、保证DDKROOT环境变量设置为Windows 2000 DDK的基目录,如果不是的话,请在控制面板“系统”属性的“高级”标签环境变量编辑器中设置好这个环境变量。
·编写必需的文件
编译WDM程序的时候,有两个文件是必须要有的,它们是:
1、makefile
(这个是什么啊?你可能会问。)对于比较年轻的程序员来说,有可能没有见过这个文件吧。其实在VC这些IDE出现之前,我们都必须使用makefile来确定项目中哪些文件需要重新编译,现在的IDE都把这个工作自动做好了
我们要做的工作很简单,就是提供这样一个文件,它的内容是:
正如它所述,不要编辑这个文件。事实上每个WDM程序所需要的makefile的内容都是一样的,也就是说,我们只需要简单地copy一个makefile到新的项目中就可以了
2、Sources
这个文件指定了驱动程序目标名是HelloWDM.sys,是一个WDM驱动程序,生成的文件存放在OBJ目录中。值得注意的是,“=”前后不能有空格,否则编译的时候会出错。
·开始编译
娃哈哈,前面罗罗嗦嗦讲了一大堆,现在终于到重点了。WDM程序的编译过程比较特殊,它不是在VC里面按F7来编译的(尽管你可以通过设置来达到这一目的),而是通过一个DDK实用工具build来完成。下面我们来讲讲具体步骤:
1、“Debug”版的生成
首先,我们假设你的源代码放在D:/HelloWDM里面。请跟着以下步骤:
“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”
屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)
如果源代码没有错误的话,生成的HelloWDM.sys将存放在objchk/i386目录中。
2、“Release”版的生成
请跟着以下步骤:
“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment”
随后的步骤跟“Debug”版相同,不同的是生成的HelloWDM.sys将存放在objfre/i386目录中。
我在前面也讲过了一些关于编译环境及工具的。在这里结合本例子我再说一下:
DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我学习的时候也没有过多的关注,我用的是2000的DDK,所以以下的所有内容都是针对2000 DDK的。
·准备工作
1、确定你已经安装了Visual C++
2、安装2000 DDK
3、安装2000 DDK成功后,在“开始”->“程序”里应该有“Development Kits”->“Windows 2000 DDK”的项目。
(注意一定要先安装好VC,然后才安装DDK,这个顺序决不能颠倒!!)
4、保证DDKROOT环境变量设置为Windows 2000 DDK的基目录,如果不是的话,请在控制面板“系统”属性的“高级”标签环境变量编辑器中设置好这个环境变量。
·编写必需的文件
编译WDM程序的时候,有两个文件是必须要有的,它们是:
1、makefile
(这个是什么啊?你可能会问。)对于比较年轻的程序员来说,有可能没有见过这个文件吧。其实在VC这些IDE出现之前,我们都必须使用makefile来确定项目中哪些文件需要重新编译,现在的IDE都把这个工作自动做好了
我们要做的工作很简单,就是提供这样一个文件,它的内容是:
# # DO NOT EDIT THIS FILE!!! Edit ./sources. If you want to add a new source # file to this component. This file merely indirects to the real make file # that is shared by all the driver components of the Windows NT DDK # !INCLUDE $(NTMAKEENV)/makefile.def |
2、Sources
TARGETNAME=HelloWDM //编译出来的驱动程序的名称 TARGETTYPE=DRIVER //编译的类型是驱动程序编译 DRIVERTYPE=WDM //驱动程序的类型是WDM驱动程序 TARGETPATH=OBJ //生成的文件存放在OBJ目录中 INCLUDES=$(BASEDIR)/inc;/ //这是需要引入的头文件 $(BASEDIR)/inc/ddk;/ TARGETLIBS=$(BASEDIR)/lib/*/free/usbd.lib/ //这是需要引入的库文件 SOURCES=HelloWDM.cpp/ //这是源码文件 |
·开始编译
娃哈哈,前面罗罗嗦嗦讲了一大堆,现在终于到重点了。WDM程序的编译过程比较特殊,它不是在VC里面按F7来编译的(尽管你可以通过设置来达到这一目的),而是通过一个DDK实用工具build来完成。下面我们来讲讲具体步骤:
1、“Debug”版的生成
首先,我们假设你的源代码放在D:/HelloWDM里面。请跟着以下步骤:
“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”
屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)
New or updated MSVC detected. Updating DDK environment…. Setting environment for using Microsoft Visual C++ tools. Starting dirs creation…Completed. D:/NTDDK>cd/HelloWDM (回车) D:/HelloWDM>build (回车) |
2、“Release”版的生成
请跟着以下步骤:
“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment”
随后的步骤跟“Debug”版相同,不同的是生成的HelloWDM.sys将存放在objfre/i386目录中。
相关文章推荐
- 驱动开发——编译正传
- [转载收藏] 在VC中利用Makefile工程编译DDK驱动
- 驱动开发——编译正传
- 驱动开发——编译正传
- 安卓编译与开发、Linux内核及驱动
- 转载收藏之用 - 微信公众平台开发教程(一):微信公众平台注册
- linux设备驱动开发范例,linux驱动例子,Linux设备驱动详解范例example 宋宝华版的光盘驱动源码,实测编译通过入门学习用
- ipc开发(liteos hi3518ev200----smaple【hi1131 单独的wifi驱动编译+单独的wifi驱动验证】)
- 驱动开发之五:如何用vc直接编译连接DDK驱动
- wince流驱动开发流程(转载)
- WinCE驱动开发问题精华集锦收藏
- 驱动开发的几种编译环境配置法
- Linux驱动开发之环境搭建----Ubuntu 12.4 编译内核
- 关于驱动开发第一篇 内核编译(上)
- 行为驱动开发: Cucumber的目录结构和执行过程 (转载)
- 必须去收藏14个响应式布局的前端开发框架(转载)
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 如何学习wince驱动开发--转载(作者:gooogle man)
- 转载—— WinCE中中断的处理过程(驱动开发人员角度)