




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
客户端DDK编译环境配置说明概要文档主要说明DDK编译环境的部署,如何使用该环境进行客户端代码的编译,环境中一些主要命令、如何扩展一些命令。以及在从VC环境下移植过来后,代码需要改进的一些描述。文章将着重对相关模块下的sources makefile进行描述。主要分以下五个部分,各个部分的详细叙述请参见各章节。1. DDK build server的部署2. DDK环境目录的介绍3. DDK编译工具和操作介绍4. 编译过程描述以及tang工程编译分析5. VC源代码移植一些常见编译错误6. 一些遗留移植和完善工作DDK build server的部署DDK build server是指存在ddk 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目录:包含了整个环境中的头文件,其中包含的子目录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_LIB_PATH)= ddk下载目录libcrt*Sdk $( SDK_LIB_PATH)= ddk下载目录libwxp*Src目录:源代码路径,开发人员将需要编译的代码都放在src目录下。Dir文件:是整个环境非常重要的一个文件,dir中记录了当前文件夹需要编译的子文件夹,并以一定格式组织,作为ddk编译时目录路由的凭证。所有在dir目录中的文件夹都会被编译,可以通过删除在dir文件中的目录记录来排除编译某个文件夹。WDK build 工具和操作下表列出了DDK环境中的一些工具盒对应处理的文件类型。DescriptionComponentConsumesBuild utilitiesbuild.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.exerc.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_buildbinsetenv.bat D:ddk_build chk x86 WinXP这段语句实际打开一个命令行窗口,并且执行Setenv.bat文件从而设置了一系列的环境变量。在目录介绍章节当中提到的环境变量都在这个时候设置好的。编译过程:build.exe实际执行编译的整个过程,大致过程可表示为:Scan:扫描工程文件。编译过程的第一步,扫描整个工程中的文件树(dir文件起作用)并且决定是不是进行目标编译。在扫描结束后,Build工具会根据扫描结果,得到目标的类型,以及决定整个编译过程的细节,包括有哪些步骤需要执行比如pass0,pass1,pass2,并且各个过程的参数有哪些等等。总之就是编译任务执行前的所有准备工作。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:编译obj,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).下表表示了一些在pass1过程中可能产生的一些目标文件: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.objNoPass2:生成最终的目标文件。在这个过程中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文件中定义了对应的PASS0_BINPLACE, PASS1_BINPLACE, PASS2_BINPLACE,那么BinPlace.exe都会被调用,并按照sources中定义的规则进行文件的binplace。具体请参见sources文件分析部分。Tang工程解析在ddk环境下的编译过程都严格的按照上面的步骤进行编译,下面将列举tang项目中的三个不同类型的工程lib,dll,exe 进行分析,主要是分析工程中的Sources文件。SOURCES文件用于描述其所在目录下,有哪些文件参与编译,编译的结果应该是什么(是一个lib还是一个sys还是一个可执行程序),输出目录在哪里,要传递给编译器的各种定义和选项分别是什么,等等。由一个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/使用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)shlwapi.lib SOURCES=Commonlib.idl RegistryFun.cpp unzip.cpp Util.cpp WinObject.cpp XmlWrapper.cpp zip.cpp ElementHelper.cpp /需要编译的源文件列表TARGET_DESTINATION=Targetchk/binplace的目的地址PASS0_BINPLACE=-:DEST CommonInc $(OBJ_PATH)$(O)$(TARGETNAME).h/PASS0 binplacePASS2_BINPLACE=$(OBJ_PATH)$(O)$(TARGETNAME).lib/PASS2 binplace其中pass0 的binplace使用了:DEST改变binplace的目的地址,如果定义了TARGET_DESTINATION,默认使用该定义的地址为binplace的目的地址。但是可使用:DEST改写该值。但必须严格按照语法进行定义。Pass2使用默认的目标地址。所以工程编译过程中,在sources的当前目录中生成一些中间文件,有几个是产生的log文件,可以帮助分析编译过程中的一些参数传递和一些错误等。具体生成的中间文件及文件夹如下图,其中在文件夹类似objchk_wxp中生成的是obj,lib,res,manifest等中间文件:当然最终的目标文件也会生成在那个目录中,但是如果进行了binplace的设置,binplace.exe会将设定的文件移动到目标目录下。LogDLL工程:TARGETNAME=LogDll/Lib名称TARGETTYPE=DYNLINK/指定工程的类型为动态链接库工程C_DEFINES= $(C_DEFINES) -DUNICODE -D_UNICODE -DWIN32MSC_WARNING_LEVEL=/W1 /WXUSE_MSVCRT=1USE_STL=1USE_ATL=1STL_VER=60MINWIN_SDK_LIB_PATH=$(SDK_LIB_PATH)INCLUDES=$(COMMON_DIR)Inc; $(CRT_INC_PATH); $(SDK_INC_PATH); $(SDK_INC_PATH)crtstl60; TARGETLIBS=$(SDK_LIB_PATH)user32.lib $(SDK_LIB_PATH)Ke
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030费托蜡在特种涂料领域应用突破与市场渗透分析
- 2025-2030费托蜡企业碳足迹核算方法与减排技术路线图
- 融资合作协议书案例模板
- 2025项目合作协议合同
- 后进生辅导会议讲话稿范文
- 冠脉造影标准操作流程指南
- 缩句技巧教学与练习册
- 2025精酿啤酒定制合同
- 服务器搬迁方案实施步骤详解
- 2025企业内部股权认购协议书标准合同范本
- 电商行业员工行为规范与工作手册
- 借款合同中国农业银行担保借款合同3篇
- 建筑装修工程质量监督管理制度
- 不锈钢栏杆施工全流程方案
- 2025住院医师规范化培训院内师资培训考核测试题附答案
- 《一定要争气》(第2课时) 课件 小学语文部编版三年级上册
- 血透室护士手卫生
- USP232-233标准文本及中英文对照
- 部编版八上语文名著《红岩》问答题精练(教师版)
- 2025-2026学年人教精通版四年级英语上册(全册)教学设计(附目录)
- 2025年秋期人教版2年级上册数学核心素养教案(校园小导游)(教学反思有内容+二次备课版)
评论
0/150
提交评论