• WinCE BSP中的Dirs文件和Sources文件(转载)


    作者:ARM—WinCE

     

    1. Dirs文件

    关于Dirs文件,就是指定要编译的路径,这个地球人都知道。还是简单介绍一下。按照文档上面介绍有三种定义:DIRSDIRS_CEOPTIONAL_DIRS

     

    DIRS:就是指定要编译的目录。

    DIRS_CE:只有目录下的源代码用于WinCE的映像文件时,才编译该目录。

    OPTIONAL_DIRS:指定可以选择编译的目录。比如:OPTIONAL_DIRS=proj1,如果想编译proj1目录,可以设置BUILD_OPTIONS=proj1,然后运行build命令就可以了。

     

    举个例子:

    DIRS= common \

                drivers \

                oal \

                bootloader

    表示需要编译commondriversoalbootloader目录。

     

     

    DIRS=* 

    表示编译当前的所有目录。

     

     

     

    2. Sources文件

    WinCE BSP中会看到很多sources文件,一般会和源代码放在同一个目录,当然不是绝对的。这些sources文件里面就是定义了一些宏,主要用于告诉Build.exe在编译源代码的时候应该如何编译和链接,告诉Nmake.exe如何编译源代码以及最后生成什么类型的文件。

     

    下面具体介绍一下:

     

    TARGETNAME:最后编译完后生成的目标文件的名字,不包括扩展名。

    TARGETTYPE:生成的文件的类型。具体值如下:

            LIBRARY,一个.lib文件

            DYNLINK,一个.dll文件

            PROGRAM,一个.exe文件

    RELEASETYPE:该宏设置两个环境变量RELEASEDIRRELEASELIBDIR,就是设置编译后生成文件存放的路径。具体值如下:

            PLATFORM,生成的文件在PLATFORM\<BSP NAME>\<Target>

            LOCAL,生成的文件在当前路径下

            CUSTOM,生成的文件在TARGETPATH指定的位置

            MANAGED,生成的文件在%_PROJECTROOT%\OAK\<Target>\Managed

            OAK, SDK, DDK,生成的文件在%_PROJECTROOT%\Oak\<Target>  

    TARGETPATH:当上面的RELEASETYPE=CUSTOM的时候,该宏指定路径

    SOURCELIBS:静态链接。函数的实体被链接过来,生成一份拷贝

    TARGETLIBS:动态链接。函数的地址被链接过来,系统执行时会加载该库

    INCLUDES:指定额外的要搜索的头文件的路径

    SOURCES:指定要被编译的文件

    ADEFINES:指定汇编器要使用的参数

    CDEFINES:指定编译器要使用的参数

    LDEFINES:指定连接器要使用的参数

    RDEFINES:指定资源编译器Rc.exe的参数

    DLLENTRY:指定dll的入口函数

    DEFFILE:指定该模块的.def文件

    EXEENTRY:指定可执行文件的入口函数

    SKIPBUILD:不做实际的build操作,直接返回成功

    WINCECOD:编译后生成一个.cod的汇编文件,用于查看汇编代码调试

    WINCECPU:用于说明为指定的CPU编译,这样被编译出来的目标文件会被放在_TGTCPU环境变量所指定的子目录下面,一般该宏在sources.cmn中定义。

    WINCEMAP:编译后生成一个.map文件,用于调试

    WINCEOEM:设置该值表示需要使用WinCE下的一些公用的库和头文件,该值一般在BSP中的sources.cmn中定义。

    WINCETARGETFILE0:用于告诉编译系统在编译当前路径下的源码文件之前,要先由Build.exe编译的目标文件。

    WINCETARGETFILES:用于告诉编译系统在链接当前路径下所有的目标文件之前,要先由Build.exe编译的目标文件。

    WINCE_OVERRIDE_CFLAGS:用于定义用户自己的编译器参数取代默认的编译器参数。

     

     

    举个例子:

    TARGETNAME=serial_smdk2410

    TARGETTYPE=DYNLINK

    RELEASETYPE=PLATFORM

    TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \

            $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib

     

    SOURCELIBS=$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\serpddcm.lib \

            $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\com_mdd2.lib

     

    DEFFILE=serial.def

    DLLENTRY=_DllEntryCRTStartup

     

    SOURCES= ser_smdk2410.cpp \

            pdds3c2410_ser.cpp

     

    需要编译的文件为ser_smdk2410.cpppdds3c2410_ser.cppDEF文件为serial.defDLL的入口函数是_DllEntryCRTStartup,静态连接serpddcm.libcom_mdd2.lib两个库,动态链接coredll.libceddk.lib两个库,最终编译为dll文件,文件名为serial_smdk2410.dll

     

     

    最后总结一下,Dirs文件会和Sources文件配合使用,但是他们不可能存在同一个目录下面。Dirs文件指定编译目录,Sources文件指定如何编译。

     

    转载自:ARM-WINCE,http://blog.csdn.net/nanjianhui/archive/2008/09/26/2984314.aspx

  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/sql4me/p/1754823.html
Copyright © 2020-2023  润新知