驱动开发——编译正传
2008-10-06 10:02
591 查看
驱动开发——编译正传
我在前面也讲过了一些关于编译环境及工具的。在这里结合本例子我再说一下: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目录中。
相关文章推荐
- [转载收藏] 驱动开发——编译正传
- 驱动开发——编译正传
- 驱动开发——编译正传
- 驱动WDK7600在VC6.0下的编译开发配置环境
- linux驱动开发内核模块编译——Makefile入门
- Linux驱动开发之ubuntu下的驱动编译
- VC6.0编译驱动时的配置 (非第三方驱动程序开发包)
- 驱动开发的几种编译环境配置法(转)
- 驱动开发之五:如何用vc直接编译连接DDK驱动
- linux设备驱动开发范例,linux驱动例子,Linux设备驱动详解范例example 宋宝华版的光盘驱动源码,实测编译通过入门学习用
- 驱动开发的几种编译环境配置法
- 驱动WDK7600在VC6.0下的编译开发配置环境
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- Linux驱动开发之环境搭建----Ubuntu 12.4 编译内核
- 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介
- 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)
- 关于linux内核驱动开发中Makefile编译的问题
- 构建嵌入式驱动开发编译环境
- linux驱动开发-模块多文件编译
- Linux驱动开发之环境搭建----Ubuntu 12.4 编译内核