WDK编译环境配置说明

上传人:20****03 文档编号:179162463 上传时间:2021-04-08 格式:DOC 页数:8 大小:129.50KB
返回 下载 相关 举报
WDK编译环境配置说明_第1页
第1页 / 共8页
WDK编译环境配置说明_第2页
第2页 / 共8页
WDK编译环境配置说明_第3页
第3页 / 共8页
WDK编译环境配置说明_第4页
第4页 / 共8页
WDK编译环境配置说明_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《WDK编译环境配置说明》由会员分享,可在线阅读,更多相关《WDK编译环境配置说明(8页珍藏版)》请在金锄头文库上搜索。

1、客户端DDK编译环境配置说明概要文档主要说明DDK编译环境的部署,如何使用该环境进行客户端代码的编译,环境中一些主要命令、如何扩展一些命令。以及在从VC环境下移植过来后,代码需要改进的一些描述。文章将着重对相关模块下的sources makefile进行描述。主要分以下五个部分,各个部分的详细叙述请参见各章节。1. DDK build server的部署2. DDK环境目录的介绍3. DDK编译工具和操作介绍4. 编译过程描述以及tang工程编译分析5. VC源代码移植一些常见编译错误6. 一些遗留移植和完善工作DDK build server的部署DDK build server是指存在dd

2、k build环境的服务器,可供每个开发人员下载到自己的开发机器,经过简单的配置就能成为本地ddk编译换进的一套机制。DDK build server可供公司各个项目组使用,方便的下载,配置并执行编译功能。目前没有ddk build server部署,大家可以从机器192.168.12.103的共享目录中进行下载。DDK环境目录的介绍从上图中可以看到红圈标识的几个文件和文件夹,下面一一进行介绍:Bin目录:包含了对应系统平台下的整个环境的工具和编译命令,已经进行环境设置的bat等。例如:cl.exe,mc.exe,midl.exe,rc.exe包括编译命令build.exe等。Inc目录:包含

3、了整个环境中的头文件,其中包含的子目录crt,atl,wtl,ddk,api,mfc等包含了各种不同编程框架,crt以及系统sdk的头文件。各个子目录都,对应与相应的环境变量一一对应:Crt $( CRT_INC_PATH) = ddk下载目录inccrtSdk $( SDK_INC_PATH)= ddk下载目录incapiWtl $( WTL_INC_PATH)= = ddk下载目录incwtl80Lib目录:包含了整个编译环境下的所有lib文件(除用户lib),其中包含的子目录atl,crt,mfc,以及不同操作系统对应的库目录。各个子目录与相应的环境变量一一对应:Crt $(CRT_LI

4、B_PATH)= ddk下载目录libcrt*Sdk $( SDK_LIB_PATH)= ddk下载目录libwxp*Src目录:源代码路径,开发人员将需要编译的代码都放在src目录下。Dir文件:是整个环境非常重要的一个文件,dir中记录了当前文件夹需要编译的子文件夹,并以一定格式组织,作为ddk编译时目录路由的凭证。所有在dir目录中的文件夹都会被编译,可以通过删除在dir文件中的目录记录来排除编译某个文件夹。WDK build 工具和操作下表列出了DDK环境中的一些工具盒对应处理的文件类型。DescriptionComponentConsumesBuild utilitiesbuild.

5、exenmake.exesources files, dirs filesmakefile, makefile.def, makefile.incFile that controls the build environmentSetEnv.batFiles that identify what is to be builtdirs, sources, and makefile filesCompilercl.exe.cpp files, .c files, .h filesLinkerlink.exe.obj files, .lib filesSupporting toolsmidl.exer

6、c.exebinplace.exestampinf.exemofcomp.exe.idl files.rc files.inx files.mof filesWindows Auto Code Review (OACR) tooloacrcl.exe, oacrlink.exeoacr.ini, oacruser.ini其中OACR工具是用来做代码的静态分析,可以帮助我们规范代码,排查一些代码中的问题。编译过程描述以及tang工程编译分析环境的设置:命令行窗口的启动,实际上是使用了以下的一段命令语句:C:WindowsSystem32cmd.exe /k D:ddk_buildbinseten

7、v.bat D:ddk_build chk x86 WinXP这段语句实际打开一个命令行窗口,并且执行Setenv.bat文件从而设置了一系列的环境变量。在目录介绍章节当中提到的环境变量都在这个时候设置好的。编译过程:build.exe实际执行编译的整个过程,大致过程可表示为:Scan:扫描工程文件。编译过程的第一步,扫描整个工程中的文件树(dir文件起作用)并且决定是不是进行目标编译。在扫描结束后,Build工具会根据扫描结果,得到目标的类型,以及决定整个编译过程的细节,包括有哪些步骤需要执行比如pass0,pass1,pass2,并且各个过程的参数有哪些等等。总之就是编译任务执行前的所有准

8、备工作。Pass0:处理源代码。在这个过程中NMAKE会调用一个或多个的工具去处理源代码,比如: Microsoft Interface Description Language (MIDL) compiler (Midl.exe). Other WDK support tools such as the Stamp INF tool (Stampinf.exe) and Managed Object Format (MOF) compiler (Mofcomp.exe). The BinPlace utility (Binplace.exe) to place files.Pass1:编译o

9、bj,lib文件。编译源文件生成object文件和库文件。以下的工具会被调用或可能被调用: The C/C+ compiler (Cl.exe). The Resource compiler (Rc.exe). Other WDK support tools such as the Stampinf.exe and Mofcomp.exe. The BinPlace utility (BinPlace.exe) to place files. The linker might be called through the OACR wrapper (Oacrlink.exe).下表表示了一些在p

10、ass1过程中可能产生的一些目标文件:TARGETTYPE value in sources fileDescriptionFiles input to pass 1Files created by pass 1Is target complete after pass 1?LIBRARY Static library.h, .c, .cpp.libYesDYNLINKDynamic link library or user-mode driver.h, .c, .cpp.lib(import library)NoDRIVERKernel-mode driver.h, .c.objNoPass

11、2:生成最终的目标文件。在这个过程中linker会将pass1中生成的中间文件链接成最终的目标,比如可执行程序,dll,驱动程序等。以下工具会被使用或可能被使用到: Linker (Link.exe). Resource compiler (Rc.exe). BinPlace utility (BinPlace.exe), to place files. The linker might be called through the OACR wrapper (Oacrlink.exe).Binplace文件:在pass0,1,2三个过程的每个结束时,如果我们在sources文件中定义了对应的P

12、ASS0_BINPLACE, PASS1_BINPLACE, PASS2_BINPLACE,那么BinPlace.exe都会被调用,并按照sources中定义的规则进行文件的binplace。具体请参见sources文件分析部分。Tang工程解析在ddk环境下的编译过程都严格的按照上面的步骤进行编译,下面将列举tang项目中的三个不同类型的工程lib,dll,exe 进行分析,主要是分析工程中的Sources文件。SOURCES文件用于描述其所在目录下,有哪些文件参与编译,编译的结果应该是什么(是一个lib还是一个sys还是一个可执行程序),输出目录在哪里,要传递给编译器的各种定义和选项分别是

13、什么,等等。由一个SOURCES文件描述的其实就是一个单独的工程,Build最后会参照SOURCES文件的设置,产生一个指定的目标文件(dll ? lib ? exe ? sys ?)完全依赖于SOURCES文件的写法。CommonLib工程:TARGETNAME=Commonlib/Lib名称TARGETTYPE=LIBRARY/指定工程的类型为Lib工程C_DEFINES= $(C_DEFINES) -DUNICODE -D_UNICODE/指定为unicode编码MSC_WARNING_LEVEL=/W1 /WX/指定警告错误级别USE_MSVCRT=1/使用crtUSE_STL=1/使

14、用STLUSE_ATL=1/使用ATLSTL_VER=70/指定STL版本为7.0MINWIN_SDK_LIB_PATH=$(SDK_LIB_PATH)INCLUDES=$(COMMON_DIR)Inc; $(COMMON_DIR)SupportInc; $(CRT_INC_PATH); $(SDK_INC_PATH); $(SDK_INC_PATH)crtstl70; /工程中引用头文件目录TARGETLIBS=/工程中引用的lib库$(SDK_LIB_PATH)user32.lib $(SDK_LIB_PATH)Kernel32.lib $(SDK_LIB_PATH)Advapi32.lib $(SDK_LIB_PATH)comctl32.lib $(SDK_LIB_PATH)gdi32.lib $(SDK_LIB_PATH)winspool.lib $(DDK_LIB_PATH)nt.lib $(SDK_LIB_PATH)shell32.lib $(SDK_LIB_PATH)ole32.lib $(SDK_LIB_PATH)oleaut32.lib $(SDK_LIB_PATH)psapi.lib $(SDK_LIB_PATH)msxml2.lib $(SDK_LIB_PATH)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号