版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Build环境使用手册Version:2010-10-14USPREADTRUM4基本编译命令Build的全部操作命令都要在Windows Command下执行,并且需要在关键脚本的当前路径,即MS_Code名目下完 成输入。例如如下:程序的搜索帮助出运行(B)文档设置BfiSll A囹回颌I叵玲C:cd F:MOCOR-W09.15_sourceMS_CodeC: :F:MOCOR_W09-15_sourceMS_Codenake PROJECT=sc66001-sp66011 nevi在编译工程时,会使用类似make PROJECT=projectname命令,这里projectname必
2、需和工程编译脚本的名称保持 肯定的对应关系,否那么系统会报:Project defined Makefile project_projectname.mk is not exist!这样的错误。如工程编译脚本文件名为project_8801 h_s3b.mk,那么projectname的内容为8801 h_s3b,因此我们可 以执行如下的命令来实现编译:make PROJECT= 8801h_s3b全新编译整个工程new通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname new,该命令将清除编译过 程中生成的全部目标码和库文件,然后对project
3、name所指定的工程进行整体编译并在没有错误消失的状况下完成最 终的链接,编译过程中会自动生成依靠关系。会这一命令适合在工程进行了较大修改:比方公共头文件数据结构发 生变化、公共接口参数发生变化、文件更新中时间戳混乱或makefile相关脚本被修改等等状况下建议使用这一命令, 确保重新对工程进行完全编译得到正确的输出结果。这个命令也会将fdl,bootloader,NV , Resource同时编译出来。该命令相当于运行如下3个命令make PROJECT=projectname cleanallmake PROJECT=projectname MODULES=resourcemake PRO
4、JECT=projectname update更新工程update通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname或make PROJECT=projectname update命令,makefile依据已有的依靠关系编译因修改涉及到的相关的模块并在没有错 误消失的状况下完成最终的链接,假设不存在依靠关系,makefile会在编译文件时自动生成依靠关系。由于只编译较 少的模块文件,可以节约编译时间。这个命令也会将fdl,bootloader,NV同时编译出来。单独编译模块通过命令行工具在工程名目MS_Code下输入命令make PROJECT=p
5、rojectname MODULESmodulel module2.55 update,该命令将对指定模块进行编译,但不会编译完成后进行自动链接。该命令属于模块开发人员 最常用的命令,在具体模块开发中需要常常使用该命令来验证模块的编译完整性。清除模块编译结果通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULESmodulel module2 clean,该命令将清除指定模块的编译输出结果,其中包含指定模块的目标文件和库文件。该命令适合 在指定模块内部消失重大修改或者模块本身makefile脚本被修改,在进行模块编译前使用。清除全部编译结
6、果cleanall通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname cleanall,该命令将清除编译 过程中生成的全部目标码和库文件。生成可执行文件通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname image可以进行链接生成相 关的可执行文件,该命令可以在模块修改并编译完成后进行,也适合第三方库文件更新后进行。编译 FDL/bootloader通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES=bootloader对 bootloade
7、r 编译通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES=fdl1 对fdl1进 行编译。通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES=fdl2对fdl2进行编译。通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES=nor_fdl对nor_fdl进行编译。输出结果位置:build/projectname_builddir/fdl_bootloader.同时会自动将最终的bin文件copy至 build/
8、projectname_builddir/img 下,便利下载到手机中。您也可以依据工程具体状况用一条命令编译出全部目标,例如如下:make PROJECT=rocky_6901” MODULES=fdl1 fdl2 bootloader”make PROJECT=n8801h_s3b MODULESnorJdl1编译NV通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES= nv_parameter 对 n v_para m ete r 编译输出结果位置:build/projectname_builddir/nvmo同时会自动将最终
9、的bin文件复制至ij build/projectname_builddir/imgo留意:. make/nv_parameter/nv_parameter.mk 是NV的makefile文件 make/nv_parameter/config_info.nv 为NV 的配置文件.假如盼望单疝修改工程某项NV参数,例如盼望修改nv_type.rivm某项,应当在使用make指令编 译出NV工程文件之后使用NVEDITOR工具编译保存。编译MMI Resource 文件通过命令行工具在工程名目MS_Code下输入命令make PROJECT=projectname MODULES= resourc
10、e 对 Resource 编译。输出结果位置:build/projectname_builddir/reso同时会自动将最终的映像文件复制到 build/projectname_builddir/img 目。默认状况下编译Resource使用了主工程中的Feature Options转义宏和app.mk模块中的宏,假如您的工程资源 编译需要使用其他的模块的宏,请修改resource.mk文件。留意:1)当前不能正确支持多个工程工程的资源并行编译2)编译资源文件需要工具脚本支持,假如环境不完整会导致编译过程停止3)修改 makeperl_scriptResGenResView.ini 中配置项C
11、ustStrTable,可支持多个字符资源文件: 如:CustStrTable=cust_str_table_O l.xls编译PC模拟器工程编译Win32模拟器工程的步骤1)通过makefile自动生成模拟器工程dsw文件;生成模拟器工程时一些配置信息(skin, resource, sim)文件MSSimCfg. ini, SIMTest. ini会自动生成 并存放到winbin文件夹下;模拟器msdev工具也会从里Copy 一份到这个文件夹中。使用类似如下的命令可在该工程的build临时文件夹的win下生成对应的全部.dsp , dsw文件make PROJECT=sc66001_sp6
12、6011 MODULES=simulator2)编译模拟器;用VC6 翻开 win/simulator. dsw 文件,设置 msdevkernel 为 Active Project,编译完成后 msdevkernel. dll 会生成到win/bin 名目下3)运行模拟器;双击win/bin名目下 的msdev. exe即可。功能说明:通过对M0C0R平台makefile工程文件分析,取得要编译的文件列表,宏,搜寻路径等信息后自动生成 对应的VC dsp工程文件和一个simulator, dsw的工作空间文件,执行simulator, dsw就可以编译出模 拟器使用的.dll文件.文件说明:
13、simulator, mk (make/simulator/simulator. mk)指示模拟器需要使用的模块列表,特殊指定的编译宏列表,及完成生成模拟器的全部工作simulator, ini (make/simulator/simulator. ini)配置文件,用来指示 模拟器工程与make工程在 文件,宏,搜寻路径的差异。其中msdevkernel为总dsp 文件,模拟器工程需要的全部lib文件如第三方.lib文件等都要加到这个工程中。该文件支持代码宏,例如如下:ftifdef PLATF0RM_SC6600Lchip drv += chip drv/source/c/ivsp_drv
14、_66001. cttendifsimulator, ini 说明:ADD_INC_PATH用来指示森makefile对应工程的搜寻路径外,dsp工程中还需要增加的搜寻路径DEL_INC_PATH用来指示在makefile对应工程的搜寻路径中需要删除的搜寻路径ADD_OPTION用来旨示除makefile对应工程的搜寻路径外,dsp工程中还需要增加的编译宏留意:宏列表需要用来引起来,如app = USB_WEBCAMERA_SUPPORT USB_LOGDEL OPTION用来指示在makefile对应工程的编译宏中需要删除的宏留意:宏列表需要用来引起来,如 rtos=zz_RT0S WIN3
15、2 _DEBUG J1BCS _LIB _RTOS _ENABLE_LOG_TOOL ADD_FILE用来指示除makefile对应工程的文件外,dsp工程中还需要增加的文件DEL_FILE用来指示在makefile对应工程的文件中需要删除的文件,假如具体某个模块的值为*那么表示这个模块的 全部文件都删除REPLACE_FILE用来指示在makefile对应工程的文件中路径的替换 使用技巧:局部软件模块实现方式在模拟器和目标硬件环境不全都,可以参考如下样例修改兼容两种平台的编译:1 .平台目标硬件端JPG为硬解码,模拟器上怎么办?: simulator, mk 中对 macro_set 赋值i
16、feq ($ (strip $(JPG_DEC_SUPPORT), JPG_HW) macro_set += JPG_DEC_SUPPORT=JPG_SW endififeq ($ (strip $ (JPG_ENC_SUPPORT), JPG_HW) macro_set += JPG_ENC_SUPPORT=JPG_SW endifsimulator, ini 修改如下:DEL OPTIONglobal 二if defined(JPG_DEC_SUPPORT_JPG_HW)global + = Z/JPG_DEC_SUPPORT_JPG_HW,Z#endifif defined(JPG_EN
17、C_SUPPORT_JPG_HW)global += JPG_ENC_SUPPORT_JPG_HWttendifADD_OPTIONglobal = WIN32 _DEBUG _MBCS _LIB THREADX_OS _RTOSif defined(JPG_DEC_SUPPORT_JPG_HW)global +二 JPG_DEC_SUPPORT_JPG_S旷#endifif defined(JPG_ENC_SUPPORT_JPG_HW) global += JPG_ENC_SUPPORT_JPG_S旷#endif2.目标硬件板上已完成的功能但模拟器上还没有调好,怎么先禁掉该功能?simula
18、tor, mk 中对 macro_set 赋值ifeq ($ (strip $ (CMMB_SUPPORT), TRUE)macro_set +二 CMMBSUPPORT二FALSEendifsimulator, ini 修改如下DEL_OPTTONglobal 二#if defined(CMMB_SUPPORT)global +二 CMMB_SUPPORTttendif5其它编译命令编译Logel工具通过命令行工具在工程名目MS_Code下输入命令make PROJECT=8801 h_s3bn MODULES=logel” clean update对logel工具进行编译。留意,编译这个工
19、具需要perl 5.8 。留意:SPRD客户无法使用该命令pclint 扫描通过命令行工具在工程名目MS_Code下输入命令make PROJECT=n8801 h_s3bM pclint对全部模块代码进 行pclint 扫描。输入makePROJECT=8801h_s3b” MODULES=napp gui psn pclint 对指定的模块代码进行pclint 扫描。编译完成net send提示功能通过命令行工具在工程名目MS_Code下输入命令make PROJECT=H8801h_s3bnmake PROJECT=8801h_s3b ip=pcname当代码编译完成时,会自动向指定的I
20、P地址或机器名 发一个net send消息,说明该工程编译是否胜利。留意,这个命令只在生成image后才调用,单独编译某个模块并不生成image时并不会调用。编译命令的简写make PROJECT=8801 h_s3b MODULES=napp gui ps”可以简写为make p=8801 h_s3b m=,app gui ps”make PROJECT=8801 h_s3b new可以简写为make p=8801 h_s3b new多线程编译Build环境支持多线程编译,可以充分采用多核CPU的优势,加快编译速度,必需通过显式的方式指定开 启线程数:make p=8801h_s3b new
21、 job二模块内开启线程数make p=8801h_s3b new job二模块内开启线程数-j同时并发编译的模块数模块内开启线程数表示编译时同时启动线程个数,建议不要超过CPU核心数。同时并发编译的模块数建议不要超过4.例如如下:make p=8801h_s3b new job=8make p=8801h_s3b new job=8 -j4分布式编译Build环境支持XoreaxIncrediBuild分布式编译,可以充分采用网络优势,加快编译速度.只需要在正 常的编译指令后增加ib=l即可:make p=8801_s3b new ib=l分布式编译支持依靠关系,所以当您执行make p=8
22、801h s3b m=app update ib=l时,会重新编译全部 app模块文件.此外假如您的代码中的文件位置有变动时,编译时请将涉及的模块先使用clean命令清理中间依 靠文件,然后再编译,否那么有可能消失找不到相关文件而无法编译的问题。跟Xoreax IncrediBuild工具有关,此命令可能工作不正常。编译出错暂停默认状况下,编译出错后将连续编译,并不听停下来。假如您需要makefile支持编译出错暂停功能,请 使用stop参数编译,并赋值为1。命令例如如下:make p=8801h_s3b stop=l new遇到特别时脚本会调用DOS下的Pause命令,用户敲任意键会连续编译
23、,假如需要强行推出需要敲 Control+C.目前停止的方式是调用DOS的Pause,按任意键会连续编译,假如需要强行推出,需要按Control+C.生成编译选项MOCOR平台可以通过命令行方式获得宏/搜寻路径/文件清单的定义,便利与其他工具集成或调试用.获得整个工程的宏make p=8801 h_s3b options.获得某模块的宏make p=8801h_s3b m=app optionsmake p=8801h_s3b m=app mmk” options.生成的宏定义文件可在如下地址获得:MS_Codebuild_builddiroptions6 MAKEFILE工作流程重要脚本在M
24、S_Code名目下存放有Makefile.rules、Makefile.modules .modules、Makefile以及工程 编译脚本,口如project_8801h_s3b.mk等等,同时在make名目的各个子名目下存放有各个模块的make脚本,即模 块编译脚本,比方aac.mk、app.mk等等。一般状况下开发人员仅维护工程编译脚本即可,Makefile.rules、 Makefile.modules 和 Makefile 未需要修改。针对模块和工程的变化,开发人员需要修改模块编译脚本和增加新的工程编译脚本。下面将针对Makefile.rules Makefile.modules和M
25、akefile进行简洁的说明,关于模块编译脚本和工程编译脚本将在后面的章节 中具体描述。注:PLATFORM.modules文件仅在maintrunk版本中存在,在mocor_09a中,该文件内容包含在 Makefile文件中。Makefile.rulesMakefile.rules中定义了绝大局部平台无关、模块无关以及工程无关的公共变量及公共函数,其中包括编译器的 指定、公共编译参数CFLAGS、AFLAGS的定义、文件复制、删除、名目创立等系统命令、公共头文件路径、SPRD 库路径以及第三方库文件路径等变量的定义。请依据您的机器上的软件状况进行相应修改。Makefile.modulesMa
26、kefile.modules定义了真正的编译指令及依靠关系,一般开发中不需耍维护该文件,这里需要指出的是:目 前有局部模块采纳了armcc编译器(比方:mpeg4_codec),对于这局部模块需要在Makefile.modules中申明,具 体操作可以参考该文件中已经被申明的相关模块局部。对分布式编译(Xoreax IncrediBuild),将 include make/perl_script/modules.plo.modulesvPLATFORMmodules定义了工程需要编译的开放模块列表,非开放模块列表,参加连接.a文件列表等信 ,息、OMakefile.third-partyMak
27、efile.third-party将第三方规律独立成一个文件,便于维护,这个文件会被include到各工程.mk中.Makefile.verifyMakefile.verify对makefile中的宏的父子关系进行校验,防止出错.此外转义的编译宏也在这个文件中生成。MakefileMakefile是最上层的总控脚本,该脚本直接处理用户的命令,并执行相关的处理,在没有特殊需要的状况下 用户不需要维护该文件。Makefile执行流程You need to type “make PROJECT=XXX newn in windows command to tell make which projec
28、t to make.We will show a simple pseudo-code that describes makefile work flow .Makefileinclude Makefile.rulesARM compiler settingCommon compiler options settingBash commands setting public function setting makefile location settinginclude project $(PROJECT).mkFeature options setting include Makefile
29、.verify Parent-child relationships of feature options Get public MACROinclude Makefile.third-partySetting third-party modules to variable 3RD_LIBSinclude vPLATFORM.moduAsSet variable:INDEPENDENT: value specified for external makefile EXPORTLIBS: value specified for sprd modules list COMPLIBS_DBG: va
30、lue specified for modules list of open source LINKLIBLIST: value specified for all .a list using for armlinking MKLIBLIST = $(foreach comp5$(EXPORTLIBS) $(COMPLIBS_DBG), $(if $(findstring $(comp),$(INDEPENDENT)J$(comp).indep, $(comp).a) image: $(MKLIBLIST) $( 3RD_LIBS)-$(LINK) $(LINKLIBLIST) -o $(BU
31、ILD_DIR)/img/$(AXFFILENAME)%.indep:$(MAKE) -f make/$7$*.mk -I ,/$(BUILD_DIR)/dep/$* %.a:$(MAKE) -f Makefile.modules -I ./$(BUILD_DIR)/dep/$* -k -r-RCOMPONENT=$*6.3两种编译方式从以上的简洁流程中可以看出,MOCOR平台工程的全部模块和工具目前采纳两种方式编译。.独立的软件和工具编译方式目前采纳独立的makefile编译的软件或者工具模块有:fdl1, fdl2, bootloader, nv_parameter, resource,
32、simulator 等。这些模块或功能对应的make/module_name/module_name.mk本身已经是一个完整的makefile文件, make直接调用执行。方法是将模块名添加到INDEPENDENT列表中。采纳独立编译的软件模块一般是实现 肯定的功能,并不肯定有.a文件生成,此方法对应6.2中的%.indep目标。# independent compileINDEPENDENT= fdl1 fdl2 bootloader nor_fdl logel simulator resource nv_parameter pclint编译方式为:make PROJECT=projectn
33、ame MODULES=bootloader留意:假如该makefile中需要使用总工程中宏信息和公共变量定义,请按如下方式包含文件。以下四行是必 需的,并且要保持如下挨次。include Makefile.rulesinclude ./project_$( P RO J ECT). mkinclude Makefile.verifyinclude Makefile.rules.主编译方式绝大局部的模块都是通过这种编译方式来完成编译的。这种编译方式使用全都的依靠关系生成方法,统一 掌握编译的行为。对应的make/module_name/module_name.mk文件并不是一个完整的makeW
34、e文件,一 般其中只包含编译需要的宏列表,文件句表,搜寻文件南径,其他都由框架自动完成。依靠关系文件存放于 MS_Codebuildprojectname_builddirdep 下。此方法对应6.2 中的 %,a 目标。每个工程工程在编译的时候,脚本会自动将Feature Options局部转义成真正的代码中使用的宏传给相应的 子模块,在对子模块代码编译的时候,自动附加上这些宏。转义的规章如下: 对功能开关型的Feature Options ,当Feature Options为TRUE时转义,为FALSE时不转义NANDBOOT_SUPPORT = TRUE # Boot From Nand
35、flash Support:#Option1:TRUE# Option2:FALSE上面的定义会产生转义宏DNANDBOOT_SUPPORT传递给各个子模块 对功能枚举型的Feature Options ,将Feature Options的名字和值拼接起来转义成一个宏,同时对 非空的值,同时转义一个Feature Options名字的宏。SUBLCD_SIZE = 96X64# Resolution Of Main LCDOption1:NONE #define SUBLCD_SIZE_NONEOption2:96X64 #define SUBLCD_SIZE_96X64上面的定义会产生转义宏
36、-DSUBLCD_SIZE_96X64和DSUBLCD_SIZE传递给各个子模块转义函数在Makefile.rules中定义,在Makefile.verify中调用,转义结果存放在全局变量中C_MACRO(for C language)A_MACRO(for Assebly language)留意:修订历史版本日期作者审核说明2007-12-11Daniel.LuoCreate0.022008-1-31Daniel.Luo增加客户发布及使用内容0.032009-03-10Mingjianliu基于MOCOR_W09.11修改0.042009-03-31Mingjianliu增加多线程编译,Wi
37、ndows command编译0.052009-04-09Mingjianliu删除Cygwin相关全部信息0.062009-04-15Mingjianliu编译命令增加5.18特殊提示,新建工程局部增加 NV,Resource局部的说明0.072009-04-20Mingjianliu依据评审结果修改0.082009-04-28Mingjianliu增加编译暂停说明:资源编译说明更新,增加编译出错的一 个说明0.092009-05-06Mingjianliu增加对VC模拟器编译说明,提示修改工程0.102009-05-30MingjianliuResource, NV说明更新0.112009
38、-07-08Mingjianliu增加通过复制方式创立新工程说明:增加source Insight与 CC集成说明;增加全局变量和转义宏的实现区分;增加第三 方编译选项说明;更新多套资源编译说明0.122009-08-19Mingjianliu1.第三方规律局部独立成一个文件y 2编译APP需要调用 toolsDEBUG TOOLBMP2Array工具3.增加分布式编译说 明.4.鼠标右键增加命令行快捷方式说明5. DOS下输入命令 时用Tab键进行命令自动填充6.增加动态生成模拟器局部说明0.132009-08-31Mi 咱 ianliu更新3.2统一编译局部关于:makefile宏赋制值的
39、特殊说明0.142009-09-24Mingjianliu更新复制方式创立工程编译脚本局部:大工程中增加PRODUCT_BASELIB_DIR变量及使用说明;MS Customize/source/product/config 驱动局部依据工程 名李自适应; 工程修改编译选项留意事项更新;更新NV编译选项说明;3. 5编译命令最大长度8K限制0.152009-10-10MingjianliuWindows模拟器调整0.162009-10-21Mingjianliu提示:Xoreax IncrediBui Id有Bug,代码路径中不要有括号, 即使是单个括号也不行以,否那么无法编译.0.1720
40、09-12-30Mingjianliu多个资源.xls合并使用问题0.182010-02-02Mingjianliu复制方式创立工程编译脚本中对非开放的.a,对应 名目只取 PRODUCT_BASELIB_DIR 的值;6.6分布式编译增加依靠亲系,并增加编译细节说明;6.8对Feature Options的使用增加了一个错误用法说明0.192010-02-12Mingjianliu依据2月11日评审修改0.202010-02-25Mingjianliu公共转义宏使用标准make语法生成,不再通过读源文件方式 生成;删除6.80.212010-03-04Mingjianliu增加5.13生成编
41、译选项0.222010-04-22MingjianliuMakefile文件中变量filter-out_macro纪录了不需要转义 成编译宏的一些makefHe变量,其中一些是编译时的命令行参 数。假如工程增加了额外的命令行参数,请考虑是否在转义 宏时将其过滤掉(假如是客户版本,检测SPRD宏时有可能不 通过)删除全局变审和转义宏区分局部,此内容已在第三 章中说明。0.232010-07-05Mingjianliu删除全局变最和转义宏区分局部,此内容已在第三章中说 明。0.242010-09-26Mingjianliu章节调整;增加新的多线程编译方式;增加宏校验出错信息0.252010-10-
42、14Mingjianliu依据CRMS00202859修改,涉及:宏定义中去掉export ,增加.modules文件Makefile.rules文件中变量filter-out_macro纪录了不需要转义成编译宏的一些makefile变量淇中一 些是编译时的命令行参数。假如工程增加了额外的命令行参数,请考虑是否在转义宏时将其过滤掉(假如是客户版 本,检测SPRD宏时有可能不通过)7模块修改及工程定制这里涉及到前面谈到的关键脚本的修改,在大多数状况下开发人员针对模块或者工程的需要只需修改和补充两类的 关键脚本:模块编译脚本和工程编译脚本。在此,我们把消失在Build环境中的最我译单位称为模块,B
43、uild系统中将 以MS_Code/make名目下的各个子名目名称作为商定的模块名称,这些子名目和各自的功能模块之间呈一一对应的 关系。添加或删除模块修改相应PLATFORM.modules文件中变量EXPORTUBS或者COMPUBS_DBG,添加或删除指定的模 块EXPORTLIBS = audioservice agc_exp aud_algorithm bsd custom_tone charjib digitalgain dsp_codec dtmf_tone dv eq_exp generic_tone layerl Iayer1_dsp img_proc display I4 m
44、peg4_codec main ps record rtos sfs scaling transsampleratedaps parser voice vsp spmlCOMPLIBS_DBG = app custom_drv chip_drv gui mmk Ucom ubot upcc version aud_dev aud_config scp scm ate refbase de sim mmk_sys caf_templete cafjnterface utility isp_service !nor_fdl !nv_parameter某个模块应当放在EXPORTUBS中进行声明或放
45、在COMPIJBS_DBG声明,取决于该模块对客户的供应方式。其中在EXPORTUBS中申明的模块说明这 些模块将采纳库文件的方式供应应客户,而COMPIJBS_DBG而模块那么说明会供应全部的源代码供客户进行开发。对于客户自己新增加的模块,那么只能在 COMPL旧S_DBG变量中申明。对于nvparameter、fdl1、fdl2、bootloader等是一些帮助的文件,只编译出来即可,不需要参加连接,那么只需要在对应模块前紧加上!”符号即变 成!nvparameter !fdl1 !fdl2 (bootloader就可以将这些模块排解在工程的连接之外。假如需要在工程中增加新的模块,那么只需
46、要在将该模块名称列举到这 个序列中,用空格和其他模块分隔开即可。留意:“”符号后面应当紧接换行符而不能跟有空格,这个序列中的最终一个模块不能再带有符号。添加或删除模块对应的.mk脚本假设有新模块需要添加到Build系统中,需要在MS_Code/make名目下同时建立对应当模块的子名目,同时在该 名目下完成和名目名称全都并以“mk”为后缀结尾的禳块编译脚本,该脚本的主要任务是完成:MCFLAG_OPT、 MINCPATH. MSRCPATH以及SOURCES (模块中有需要编译汇编文件的状况下还有MASMFLAG_OPT)而定义, 编写方法同前面的一小节。假设有模块需要删除,删除MS_Code/
47、make名目下对应当模块的子名目即可。修改模块模块名目结构调整假如模块内部存储名目结构或者模块整体相对名目发生转变,那么需要修改模块相应的模块编译脚本并修转变 量MSRCPATH,这里以模块aac为例:在 make/aac.mk 中定义了 :MSRCPATH = MS_Ref/codec/aac/src MS_Ref/codec/aac/src/decoder这里MSRCPATH用来定义该模块源文件的搜寻路径,假如该模块中源文件的路径发生了变化,就需要重新 定义MSRCPATH,确保模块编译需要的文件都包含在了搜寻路径中。假如涉及到头文件路径消失变化那么需要重新定义变量MINCPATH,以确保
48、模块使用到的头文件完全被包含 在了头文件定义路径之中。以aac.mk为例,其MINCPATH变量定义如下:MINCPATH = MS_lnclude/chip_drv MS_Ref/codec/aac/inc MS_Ref/codec/aac/src/decoder MS_Ref/codec/aac/src/aacjDlus_inc注:这里MSRCPATH和MINCPATH的相对路径都是以MS_Code作为上级名目而言的,所以需要依据这一商定给出 源文件或头文件完整的相对路径。添加或删除文件假如模块编译文件有添加或删除的需要,那么需要修转变量SOURCES,可以将增加的文件直接添加在原有的 定
49、义之后,假如是需要删除,那么可以直接从定义中拿掉。以aac.mk为例,其SOURCES定义如下:SOURCES = aac_adp.c aac_lc_decoder.c bits.c cfft_tab.c common.c decoder.c filtbank.c huffman.c id3_parse.c is.c mp4.c mp4atom.c mp4ff.c mp4sample.c mp4util.c ms.c pns.c pulse.c specrec.c syntax.c tns.c internal_var.c这里需要强调转意符的用法,在这里表示续行,在后不能有空格消失,在最终一个
50、文件后(这里为internal_varx)不应当再消失该符号。修改编译选项有时为了适应不同平台或者产品的需求,模块编译选项会发生变化,这时需要修转变量MCFLAG_OPT,通 过不同的编译选择来满意需要,以aac.mk为例,其MCFLAG_OPT定义如下:MCFLAG_OPT = -Otime -zc -D_AACARM_这里的Qtime -zc属于该模块需要的编译器特殊选项,关于编译其他选项在前面的Makefile.rule中有描述, 请参考Makefile.rule中CFLAGS的定义。这里宏“_AACARM_”那么属于模块自身的特殊选项。针对不同工程的需要 MCFLAG_OPT可以在这里
51、进行相应的修改。留意:对于“_AACARM_”这类模块内部定义的编译选项,需要在前面加上以示为编译选项。创立新工程 创立全新的工程.在MS_Code名目下创立一个新的工程编译脚本,该脚本的命名规章必需是前缀“project,+ “工程名称” +文件后缀“mk”的形式,比方工程名称为abed,那么相应的工程编译脚本名称必需是project_abcd.mk。.在1/1$_(3。161/1$_(31151。71126501196叩0111。1(:0加9名目下仓ij建以 projectname 为名的文件夹,并初始化 好全部的工程定制文件并留意修改makecustom_drvcustom_drv.mk
52、.修改jectname.mk 中的 PR0DUCT_C0NFIG 变量值 指定为 “projectname,如 abed.在MS_CodeMS_Customize下创立编译其需要的scatter file文件.在MS_CodeVersion名目下创立相应的工程版本文件(version. 修改 MS_Codemakeresourceresource.mk指定资源路径.修改 MS_Codemakenv_parameternv_parameter.mk 指定NV配置文件复制方式创立工程为了加快创立工程文件的过程,您可以基于一个已有的一个工程文件,复制后改一个名字基本就可以 编译
53、通过了,在这个基础上配置您想要的工程配置。当您通过复制方式创立一个新工程时,请考虑以下几项信息:请确认新工程中PRODUCT/ONFIG指定的名目是否需要修改,是否需要创立一个新的驱动文件集;.请确认新工程中PRODUCT_BASELIB_DIR指定的非开放模块.a名目名是否需要修改;.请确认新工程的nv是否需要修改,检查nv_parameter.mk文件是否满意您的需要;.请确认新工程的Resource是否需要修改,检查resource, mk文件是否满意您的需要;.请确认是否为新工程创立一个新的scatter file文件7.4 修改工程Feature Options修改工程功能开关相关的
54、编译选项时请留意:.只有主Makefile中的“Feature Option (User Customized) n区域的宏开关,可以自行开关.任何非原那么1中的宏开关(包括子makefile,代码中),用户均不行自行修改。如要更改,必需通知展讯CPM, 由展讯修改宏并重新编译版本发给客户,并且假如修改将导致编译错误:Cant return outside a subroutine at ./make/perl_script/sprd_macro_check.pl line XXX不同的工程可以按工程需要对上述变量进行相关修改。与此同时,不同的工程或平台需要选择不同的第三方库文 件参加链接,所
55、以有必要修改文件 Makefile.third-partyo8第三方编译选项说明第三方软件供应商,请使用如下的编译选项来编译代码以协作SpreadtrumMOCOR平台。 SC6600R 平台:noSTACKCHECK 版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM7TDMI -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM7TDMI -01 -bi -g+ -apes /in
56、terwork/swst -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/swstSC6600L 平台noSTACKCHECKnoSTACKCHECK版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM7TDMI -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM7TDMI -01 -bi -g+
57、-apes /interwork/swst -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/swstSC8801H 平台noSTACKCHECKnoSTACKCHECK版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM926EJ-S -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM926EJ-S -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM926EJ
58、-S -01 -bi -g+ -apes /interwork/swst -fy -Ec -Wall=-cpu ARM926EJ-S -keep -bi -g -apes /shlclient/interwork/swst9相关使用技巧查看log文件Build相关的屏幕输出同时也被重新定向输出到了各个模块的编译log文件中,一旦系统报告链接错误:Could not open file build/rocky_dvb_builddir/lib/module_n.a,那么说明模块module没有能够正确编译完成,可以 查看该模块的相关log,舁查而“ error或者rule”相关的内容,查明出编的
59、缘由。makefile 报错:No rule to make target XXX needed by、yyy.例如 make1: * No rule to make target guianim.o1, needed by gui.a.这个错误说明:当编译gui.a的时候,无法生成guianim.o缘由是没有搜寻到生成guianim.o所使用的源文件,这个文件可能是guianim.c , guianim.cpp, guianim.s 等。根源有可能为:.mk中宏使用不对源文件不存在makefile中源文件的搜寻路径MSRCPATH不完整导致make找不到这个源文件.makefile 报错:C
60、ant return outside a subroutineat ./make/perl_script/sprd_macro_check.pl line XXX对SPRD客户,只能修改工程文件中Feature Options (For User)局部的Feature值,否那么make会给出错误信 息并停止编译。此功能在 makefile文件目标 builddirs 中通过调用./make/perl_script/sprd_macro_check.pl 脚本实现。Source Insight和ClearCase配置配置过程:1、选择Source Insight的菜单Option中的Custom
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专项资产委托担保服务协议版B版
- 2024年专业咨询居间谈判合同模板
- 2024专项条款补充协议版B版
- 2024常用设备租赁协议模板大集合版
- 2024年全面外包劳动力协议细则版B版
- 2024版进出口货物代理合同2篇
- 二零二四年度房地产买卖与中介合同(含房产信息、交易金额和中介费用)3篇
- 五年级数学(小数乘法)计算题专项练习及答案汇编
- 五年级数学(小数除法)计算题专项练习及答案汇编
- 2024专业软件保障服务协议范本版B版
- 天王补心丸和柏子养心丸
- 光伏电站工程防雷接地专项施工方案设计
- 沥青检测报告(共10页)
- 心血管疾病患者营养评估与饮食指导
- 家庭教育讲座(课堂PPT)
- 脊柱损伤固定搬运术ppt课件PPT课件
- 解一元一次方程复习课PPT精品文档
- 南水北调中线工程大移民现场直播
- 毕业设计(论文)基于PLC自动门控制系统的设计
- 各功能室管理表册
- 铸造用高纯生铁
评论
0/150
提交评论