




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文详解MTK的编译过程,并会根据我的理解来更新。阅读上文对本文的一些文件和术语会有很好的帮助。导读: Comp.mak 完成模块编译连接,生成bin Gsm2.mak 主编译文件,完成clean,remake,new等工作 XXX_GPRS.mak 客户私有的配置,根据客户的不同,而设定不同的配置文件 Option.mak 工程中的基本配置及宏定义文件 Verno_XXX.bld 版本文件 Custom.bld 要保证在客户版本中都使用相同的配置的地方要写在这里,这个里面的一些文件不能被改变 第一步: 1.Make.bat命令首先调用ChgFileMode.bat,将编译过程中需要用到的文件的只读属性修改为可读写,再调用make2.pl。 2.Make2.pl的主要工作就是匹配gsm2.mak的参数,然后通过命令 system($makeCmd -f$makeFolder$myMF -r -R CUSTOMER=$custom PROJECT=$project $action);来调用gsm2.mak。 具体解析出来就是 make -f makegsm2.mak -r R CUSTOMER=工程名 PROJECT=gprs new|update|remake 第二步:整个过程如图 Gsm2.mak Option.mak XXX_GPRS.mak REL_CR_MMI_GPRS.mak USER_SPECIFIC.mak 1.在Gsm2.mak文件的开始处调用了option.mak文件。 2.Option.mak又将make$(strip $(CUSTOMER)_$(strip$(PROJECT).mak文件包含进来,这个模式匹配结果为:make目录下,工程名称_GPRS.mak,如K500GSD_GPRS.mak。 3.在$(strip $(CUSTOMER)_$(strip$(PROJECT).mak文件中又调用了REL_CR_MMI_$(strip$(PROJECT).mak文件,这个文件模式具体被解析为make目录下的REL_CR_MMI_GPRS.mak文件。 REL_CR_MMI_GPRS.mak这个文件定义了哪些文件需要加入到编译目录中。 其中定义了MMI部分的编译目录为MMIDIR = plutommi。 在变量CUS_REL_BASE_COMP中定义了资源的编译目录: CUS_REL_BASE_COMP += $(strip $(MMIDIR)mmi $(strip $(MMIDIR)mtkapp $(strip$(MMIDIR)tool $(MMIDIR)WIN32FS CUS_REL_BASE_COMP += $(strip$(MMIDIR)CustomerCustomerInc $(strip $(MMIDIR)CustomerCustomize $(strip $(MMIDIR)CustomerCustResource$(strip $(MMI_VERSION) $(strip $(MMIDIR)Customerdebug $(strip $(MMIDIR)CustomerImagesGameImages $(strip $(MMIDIR)CustomerImagesdecoder $(strip $(MMIDIR)CustomerRes_MMI $(strip $(MMIDIR)CustomerResGenerator $(strip $(MMIDIR)CustomerResourceDLL $(strip $(MMIDIR)CustomerResources $(strip $(MMIDIR)CustomerAudio 客户的资源需要编译如下文件:CUS_REL_SRC_COMP += mmiresource mtkapp gdi_arm plutommi vendorapp 图片名称为:CUS_REL_BASE_COMP += $(strip$(MMIDIR)CustomerImages$(strip $(MMI_PROJ)$(strip$(MAIN_LCD_SIZE),可解析为如: plutommicustomerimagesK500GSD176X220 REL_CR_MMI_$(strip $(PROJECT).mak 其中CUS_REL_OBJ_LIST这个变量存储了连接过程中所需要的文件名称 4make$(strip $(CUSTOMER)_$(strip$(PROJECT).mak文件的功能。 CUSTOM_OPTION定义了所有需要编译进去的功能模块的宏。 COMPLIST变量的功能: ifeq ($(strip $(RTOS),NUCLEUS) COMPLIST = nucleus nucleus_int nucleus_ctrl_code nucleus_critical_data Endif 如果操作系统为NUCLEUS,那么COMPLIST为后面的值,COMPLIST为所要编译的文件列表,里面存放了很多*.inc文件,展开后就变为 configinclude stacklibinclude adaptationinclude kalinclude等等 5 option.mak文件的在后面调用了makeUSER_SPECIFIC.mak 如果使用CPU为ARM,则编译工具目录为如下定义 ifeq ($(strip $(COMPILER),ADS) DIR_ARM = c:progra1armadsv1_2 DIR_ARM := $(strip $(DIR_ARM) DIR_TOOL = $(DIR_ARM)bin DIR_ARMLIB = $(DIR_ARM)lib DIR_ARMINC = $(DIR_ARM)include Endif 连接打包工具等为如下几个: DIR_TOOL := $(strip $(DIR_TOOL) LINK = $(DIR_TOOL)armlink.exe # Linker ASM = $(DIR_TOOL)armasm.exe # ARM assembler LIB = $(DIR_TOOL)armar.exe # Library tool BIN_CREATE = $(DIR_TOOL)fromelf.exe # Binary tool 下面这段代码告诉我们需要用什么编译工具来编译 ifeq ($(strip $(COMPILER),ADS) ifeq ($(strip $(COMPILE_MODE),INST16) CC = $(DIR_TOOL)tcc.exe # Thumb Mode(16bits), use tcc CC32 = $(DIR_TOOL)armcc.exe # ARM Mode(32bits), use armcc CPPC = $(DIR_TOOL)tcpp.exe # Thumb Mode(16bits), use tcc CPPC32 = $(DIR_TOOL)armcpp.exe # ARM Mode(32bits), use armcc else ifeq ($(strip $(COMPILE_MODE),INST32) CC = $(DIR_TOOL)armcc.exe # ARM Mode(32bits), use armcc CPPC = $(DIR_TOOL)armcpp.exe # ARM Mode(32bits), use armcc else CC = $(DIR_TOOL)tcc.exe # Default tcc CC32 = $(DIR_TOOL)armcc.exe # ARM Mode(32bits), use armcc CPPC = $(DIR_TOOL)tcpp.exe # Thumb Mode(16bits), use tcc CPPC32 = $(DIR_TOOL)armcpp.exe # ARM Mode(32bits), use armcc endif endif endif ifeq ($(strip $(PLATFORM),MT6223P) AFLAGS := -g -littleend -cpu ARM7EJ-S Endif COMMINCDIRS变量在先包含了基本功能模块的inc目录后再包含如下文件 COMMINCDIRS += $(DIR_ARMINC) $(CUSTOM_COMMINC), 6Option.mak中定义了一些附加功能模块的编译模式(是否被编译,被编译成什么样的结果),比如说蓝牙,UART3,WIFI,USB,WAP等等,还有一些编译器的设置。 我们的版本号和Scat文件被定义在这个变量中:5056L SCATTERFILE = customsystem$(strip$(BOARD_VER)scat$(strip $(PLATFORM).txt VERNOFILE = makeVerno_$(CUSTOMER).bld .bin文件的名称设置在这个变量TARGNAME = $(CUSTOMER)_$(strip$(SUB_BOARD_VER)_$(PROJECT)_$(strip $(PLATFORM)_$(strip$(CHIP_VER) TST_DB := $(strip $(TSTDIR)database_classb 然后被包含到Option.mak文件中来,include $(strip$(VERNOFILE)。 7Gsm2.mak文件中new执行的指令 new : cleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite update update所执行的指令 update : cleanlog cleanbin mcddll_update codegen resgen cksysdrv remake remake所执行的指令 remake : mcp_check cleanlog cleanbin genverno libs $(BIN_FILE) done resgen用来编译资源文件:Res_XXX.c (echo CUSTOM_OPTION = $(foreach def,$(BOARD_VER) $(PLATFORM) $(LCD_MODULE) $(EXT_CAM_MODULE)$(CMOS_SENSOR),-D $(def) $(MMIDIR)customerresGeneratorcustom_option.txt) 首先将CUSTOM_OPTION重定向到custom_option.txt中 (type makecus_opt.tmp $(MMIDIR)customerresGeneratorcustom_option.txt) 使用toolsstrcmpex.exe生成cus_opt.tmp, tgt_opt.tmp,inc.tmp三个文件 将cus_opt.tmp 重定向到custom_option.txt中 (del $(MMIDIR)mmiTargetOption.txt) & (copy /Y maketgt_opt.tmp $(MMIDIR)MMITargetOption.txt) 再将TargetOption.txt更新一下,将tgt_opt.tmp重定向到TargetOption.txt中 (type makeinc.tmp $(MMIDIR)customerresGeneratorcustom_include.tmp) 再将inc.tmp重定向到custom_include.tmp中, 执行replace_project_name.pl文件,编译Res_XXX.c 再执行ResGenerator_HW.bat,编译资源文件。1. 编写目的本文编写的目的主要是从整体上理解MTK的编译过程,以便较快的处理编译中遇到的问题,同时为以后可能的优化编译过程提供参考。2. 简介MTK的编译过程主要是在windows命令行下通过Makefile文件执行相应的perl脚本或c程序,将资源包生成c源程序,并与相应模块的c程 序.o,.lib或.obj的中间代码,最终生成在手机上使用的.bin文件和在模拟器上使用的mmiresource.dll资源文件。3. 编译环境A. 编译工具和辅助工具? ADS1.2? ADS1.2_update_848.exe? MSYS 版本:1.0.10? MinGW 版本:3.1.0? Gcc-core-3.3.1? Gcc-g+-3.3.1? ImageMagick 版本:6.3.6 Q16? 7-zip 版本:3.13? 注意:按照联发科技的要求,最好上述软件采用建议的版本,否则可能会出现异常情况,导致不能正常编译。B. 编译环境搭建? 按默认路径安装ADS1.2,并安装848补丁包? 按默认路径安装Perl? 按默认路径安装7_zip? 安装MinGW先按默认路径安装MinGW安装包,然后解压gcc-core、gcc-g+的压缩包,讲解压后的两个文件夹复制到MinGW安装路径下。? 安装MSYS? 安装ImageMagick,注意:按默认提示安装到Select Additional Tasks时,所有的选择全取消,后面再按默认安装。? 复制7z.exe拷贝.7_Zip7z.exe 至.plutommiCustomerResGenerator,并改名为7za.exe。? 复制MinGW拷贝.MinGW至.ToolsMinGW。? 复制MSYS拷贝.msys1.0至.ToolsMSYS。? 复制ImageMagick拷贝.ImageMagick-6.2.5-Q16文件夹下全部文件至 .plutommiCustomerResGenerator目录下? 设置make.exe改名mingw32-make.exe(.ToolsMinGW)为make.exe,并放在tools目录下。C. 编译环境检查? 检查第三方软件安装情况如果确认全部安装,可跳过此步。将custom3rdParty.pl文件拷贝到本机,修改4$sevenZipPath = C:Progra117-Zip; 5$MinGWPath = C:MinGW; 6$MSYSPath = C:MSYS;然后运行在Toolschk_env.exe? 检查windows环境变量? 检查MTK中Makefile变量是否正确打开.makeoption.make,检查关于ADS编译器的路径设置ifeq ($(strip $(COMPILER),ADS) DIR_ARM = c:adsv1_2 DIR_ARM := $(strip $(DIR_ARM) DIR_TOOL = $(DIR_ARM)bin DIR_ARMLIB = $(DIR_ARM)lib DIR_ARMINC = $(DIR_ARM)includeEndifD. 结束现在可以执行MAKE了,例如Make customer_name gprs new_modisMake CUSTOMER_NAME gprs newE. 搭建编译环境的另一种方法正确安装A中所述软件后,配置custom3rdParty.pl中变量,用该批处理文件自动配置剩余工作。F. 搭建编译环境的一种捷径当已经配置好一个MTK工程,需要在另一个工程中搭建编译环境时,有一种便捷的方法,步骤如下:? 假设已配置好的工程MAUI.A,待配置的是MAUI.B;? 备份MAUI.B的tools目录,如改名为tools_new;? 复制MAUI.A的tools目录至MAUI.B的目录下;? 用MAUI.B原来的tools目录下所有文件覆盖当前的tools目录,如复制tools_new下所有文件至tools下;? 复制MAUI.A下plutommi/Customer/ResGenerator/7za.exe和convert.exe至MAUI.B下的plutommi/Customer/ResGenerator。4. 编译命令与文件MTK编译分资源的编译和代码的编译。1) 资源的编译a) 在如下的情况下,需要重新编译资源:? 修改了字符串资源文件(Ref_list.txt)、字库文件(FontRes.c,L_*.h)、MMI配置文件(MMI_featuresPLUTO.h)等,这些文件位于.plutommiCustomerCustResourcePLUTO_MMI ;? 修改了MMI资源装载配置文件,这些文件位于.plutommiCustomerCustResourcePLUTO_MMIRes_MMI 目录下,这个目录下都是Res_*.*文件,是各个AP或模块的资源装载文件,包括菜单、图片和字符串资源的装载配置;? 注意:Cust*.*文件是资源编译生成的,不能手动修改。b) 编译方法进入.plutommiCustomer目录,执行remakeResource.bat。若是在模拟器上使用,则还需要在VC环境下build一下,就可以看到效果了。c) 与资源编译相关的文件? ResGenerator_HW.bat在编译手机目标板工程时,有“new”,“resgen”等选项时,自动调用;? ResGenerator.bat手机PC模拟器工程中,添加新资源后,需要手动调用;? remakeResource.bat手机PC模拟器工程中,只替换图片或更新字符串等情况下,需要手动调用;? res_gen.txt资源编译的log文件,在build目录下;? Makefile.plutommiCustomerResGeneratorMakefile此文件是资源装载预编译程序的Makefile;? PopulateRes.c.plutommiMMIResourcePopulateRes.c执行资源装载,主体是函数PopulateResData(),mtk_resgenerator.exe在执行时会调用该函数;? MMIDataType.h.plutommimmiIncMMIDataType.h定义AP的ID范围。2) 代码的编译A. 编译命令命 令说 明Clean清除所有的目标文件、库文件和日志文件,保留目录结构New清除并重新编译所有的文件主要完成工作 gsm2.makcleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite updateUpdate扫描资源、代码的改变,有改变的重编,无改变的不编主要完成的工作 gsm2.makcleanlog cleanbin mcddll_update codegen resgen cksysdrv remakeRemake不扫描资源,只扫描代码的改变,有改变的重编,无改变的不编主要完成的工作 gsm2.makmcp_check cleanlog cleanbin genverno libs $(BIN_FILE) doneB. 编译相关的文件编译用到的文件主要放在make文件夹中。各个文件的简要说明如下:文件名说 明Gsm2.mak编译过程中主要执行的make文件,这个文件从命令行获得编译参数,做出相应的处理。它定义了各个参数的执行过程,包括:new、remake、update等。以及调用其它perl或c程序生成目标文件。Option.mak定义了编译环境中用到的工具及相关的目录,根据大的编译开关定义了小的编译和链接选项。XXX.lisXXX模块的.c文件如 plutommiMMIMyAppMyAppSrcMyAppSrc.cXXX.pthXXX模块的.c文件存放的路径如 plutommiMMIMyAppMyAppSrcXXX.defXXX模块用到的编译开关,当XXX模块引用其它模块中在编译开关下定义的变量、函数或宏时,就需要将这个编译开关加进来。XXX.incXXX模块用到的头文件路径,需要将XXX模块引用的头文件及,头文件引用的头文件的路径均要包含进来。如 plutommiMMIMyAppMyAppIncXXX_GPRS.mak定义了需要编译的模块列表、编译中包含文件和生成文件的路径,定义trace的头文件路径,全局的编译开关,用户的一些编译选项,最后定义了编译路径和目录。用户可以在这个文件中定义配置。Comp.mak编译和集成模块源文件,编译生成库文件。构建目标代码依赖列表,设置每个模块的编译路径及编译选项,设置生成目标lib的路径,设置生成obj的路径。buildinfo.tmp包含了在Gsm2.mak和Option.mak中用到的项目和平台名称。compbld.tmp包含了编译每个模块时的编译信息。目标文件生成的目标文件为.bin文件,位于.buildproj目录下面,build目录为生成的一个目录。Log文件Log文件同.bin文件一样,也是位于build目录下,如果编译出错,可以在命令行中看到出错的模块,然后到build目录下找对应的Log文件。MT6225r目录包括了每个模块的依赖文件(由mak产生的.dep)。 MT6225o目录包含所有生成的obj文件和lib文件。C. 文件命名规则一般来说MMI程序在plutommimmi或者mtkapp下面,程序源文件及头文件命名有一定的规律。以工具箱模块为例,有三个相关目录。Organizer 程序总目录OrganizerInc 头文件目录OrganizerSrc 源文件目录在OrganizerSrc下创建源程序文件Ebook2.c在OrganizerInc下创建程序头文件 EbookProt.h EbookDefs.h EbookTypes.h EbookGprot.h下面介绍每个文件的作用:? *Src.c/*.c本程序的主源程序? *Gprot.h用来放本程序的所有函数声明,但此头文件是被别的程序所加载的,也就是说此文件所申明的都是对外接口;? *Gtype.h用来放本程序所需的类型、结构、常量宏定义,此头文件同时被别的程序所加载;? *Gdcl.h包括被其它程序调用的全局变量定义;? *Gexdcl.h包括全局变量的声明,该头文件被别的程序所加载;? *Prot.h用来放本程序的所有函数声明,但此头文件只被本程序的源程序所加载;? *Dcl.h定义仅被本程序所调用的全局变量;? *ExDcl.h包括全局变量的声明,但此头文件只被本程序的源程序所加载;? *Types.h用来放本程序所需的类型、结构、常量定义;? *Def.h用来放本程序的资源ID定义;? *.*也可以自己定义程序的命名规则。5. 配置编译选项XXX_GPRS.mak是用户配置文件,用户可以通过修改该文件配置编译选项。1) 增减编译的模块牵涉到XXX_GPRS.mak中的两个变量:? COMPLIST列出所有可以被编译成.lib库文件的模块。当在COMPLIST中增加编译的模块时,注意要在make下相应的目录中创建相应的.lis,.inc,.path,.def文件。? CUS_REL_MTK_COMP列出所有只提供.lib库文件的模块。这些库文件要位于./mtk.lib中。2) 将含有源文件的模块以库文件的形式编译? 从COMPLIST中去除该模块;? 将该模块加入CUST_REL_MTK_COMP;? 将.lib库文件拷贝至./mtk.lib中;? 删除make下相应的模块目录。3) 配置编译MoDISMoDIS作为MTK软件开发的重要工具,常常被使用。但是由于在PC端与手机端不可避免存在一定的区别,因此在编译MoDIS时,其配置选项有一些与手机端编译存在一定的区别。在配置好手机端编译的基础上,相应MoDIS的配置还牵涉到:? CreateMoDIS.ini? Module.ini? CreateMoDIS.pl以下分别介绍这三个文件a) CreateMoDIS.iniMoDIS的全局配置,有7个部分配置编译:? GLOBAL_SETTING变量disbale_libs关闭MoDIS编译中不需的手机端模块,例如bootloder模块,此模块在手机端上用于引导系统,但是在MoDIS上,由于并不是真实的目标板环境,因此该模块需要取消。变量enable_libs增加MoDIS编译中所独有的模块,例如modis_fs,由于采用了模拟的文件系统,因此在disbale_libs中加入fs模块后,在enbale_libs上加入modis_fs。? ENABLE_INC_PATH/ DISABLE_INC_PATH增加或减少头文件的搜索路径,其中global为全局路径,其他为相应模块的路径。? ENABLE_OPTION/ DISABLE_OPTION增加或减少宏定义,其中global为全局宏,其他为相应模块或文件的宏。? ENABLE_FILE/ DISABLE_FILE增加或减少相应模块的文件。b) Module.iniMoDIS目录下各模块都有.ini文件,通过此类文件,用户可以修改相应模块编译时的头文件搜索路径、宏定义选项。c) CreateMoDIS.pl编译MoDIS的批处理文件,在修改一些模块,如增加国笔时需要修改。6. 常见编译错误1) mtk_resgenerator.exe不能正常运行。可能是ResGenerator文件夹中的某些文件有错误。一个原因是在ResGenerator文件夹中缺少temp.rgb这个文件,并且不能自动生成。2) 240X320屏的Font_res.c文件的错误,因为打开了中文字体的编译开关,只需要将mmi_featurespluto.h文件中_MMI_LANG_SM_CHINESE_的编译开关关闭即可。3) 出现以下错误,plutommimmiFunAndGamesFunAndGamesSrcGame.c, line 349: Error: C2455E: array 0 foundplutommimmiFunAndGamesFunAndGamesSrcGame.c, line 350: Error: C2455E: array 0 found因为默认的240X320屏幕打开的关于游戏的编译开关下没有游戏,所以需要打开mmi_featurespluto.h文件中的_MMI_GAME_VSMJ_240x320_编译开关。4) 现象:mmiresource模块生成错误:plutommiCustomercustresourcecustimgmapext.c, line 31: Error: C2456E: undeclared name, inventing extern int MAX_IMAGE_IDSplutommiCustomercustresourcecustimgmapext.c, line 31: Serious error: C2958E: illegal in constant expression: non constant MAX_IMAGE_IDSplutommiCustomercustresourcecustimgmapext.c: 0 warnings, 1 error, 1 serious error原因:改变了屏幕大小后,128X160目录下的图片资源有问题。解决办法:更换128X160目录下的图片资源,重新编译此模块。5) 现象:Free clusters are NOT enough . Check ckSysDrv.log for detail !Toolsmake.exe: * cksysdrv Error 1 解决办法:删除掉customsystemCCDH26_05C_BB目录下的custom_EMI.ccustom_EMI.hflash_opt.h 三个文件。6) 现象:在新加模块的.c文件中引用一个b.h,产生b.h中的aaa变量没有定义的错误,具体错误如下:原因:没有包含定义aaa变量的头文件a.h。解决办法:在include b.h之前include a.h7) 现象:plutommiCustomercustresourceCustImgDataHW.h, line 19361: Serious error: C2934E: duplicate definition of _CUSTOMER_IMAGES_EMPTYIMAGE_BMP原因:解决办法:删掉CustImgDataHW.h这个文件重新编译8) 现象:在链接bin文件时,出现以下错误:Error: L6218E: Undefined symbol custom_setAdvEMI (referred from bootarm.obj).原因:custominfo.pl文件没有修改,默认只打开CCDH26_05C_GPRS.mak一 个文件,并不打开其它定义编译开关的文件,导致custom模块中的有些文 件没有编译,所以一些变量在最后链接时显示未定义。解决办法:修改custominfo.pl文件。9) 现象:编译某个模块,出现错误:Error: L6218E: Error: C2933E: type disagreement for mmi_phb_info_entry_list原因:调用mmi_phb_info_entry_list函数时传递的参数不正确,或者是函数mmi_phb_info_entry_list在调用时还未定义。解决办法:修改custominfo.pl文件。10) 现象:编译时出现字符串未定义的错误,enum_list.h:2046: error: STR_ENTERTAINMENT_EXPLAIN_WOMANKNOWLEDGE undeclareere (not in a function)原因:可能是编译开关没打开,或者是正在使用excel表,readexcel.c中没有添加相关的头文件。还有一种可能是在使用这个字符串ID的模块的make底下的.inc文件中没有将定义这个字符串的头文件路径加上。还要注意防止头文件引用的宏定义是不是重复。11) 现象:执行ResGenerator.bat时到输出第一份记录文本文件时当机,并且每次都过不去。原因:安装了Windows的更新程序导致的,具体的可能是因为两个原因,一是安装了MSN最新版的补丁,也有可能是安装了SP3补丁所致建和使用lib用cmd切换到*.obj目录下 命令 armar -create *.lib *.obj 其中*.obj是由*.c文件编译后生成的。 使用的话在*.mak里面加上 COMPOBJS += 对应的路径 记得将lis文件里的.c删除自己写多好呀哈哈。 echo off rem * rem * Simple Maker For Build DLink APP * rem * build application tool * rem * version 1.0 * rem * SET CC= armcc.exe SET LIB=armar.exe SET LIBPARAM=-create SET ASM=armasm.exe SET LINK=armlink.exe SET FROMELF= fromelf.exe Set SRC_FILES=.pgc_gamesbeadmf_bead_playing.c .pgc_gamesbeadmf_bead_select.c .pgc_gamesbeadmf_bead_start_scene.c .pgc_gamesbeadmf_gameparticle.c .pgc_gamesbeadmf_tanzhu_res.c .pgc_gamesbeadmf_bead_menu.c Set INC_PTH= -I. -I.pgc_gamesbeadmf_bead_playing.c -I.pgc_gamesbeadmf_bead_select.c -I.pgc_gamesbeadmf_bead_start_scene.c -I.pgc_gamesbeadmf_gameparticle.c -I.pgc_gamesbeadmf_tanzhu_res.c -I.pgc_gamesbeadmf_bead_menu.c set DEF_COM=-D.pgc_gamesbeadmf_bead_playing.c -D.pgc_gamesbeadmf_bead_select.c -D.pgc_gamesbeadmf_bead_start_scene.c -D.pgc_gamesbeadmf_gameparticle.c -D.pgc_gamesbeadmf_tanzhu_res.c -D.pgc_gamesbeadmf_bead_menu.c set CCPARAM= -c -cpu ARM7EJ-S -littleend -O2 -zo -fa -apcs /interwork set OBJ_PATH=.outputjm_apploader set LIB_NAME=.outputjm_apploaderjm_apploader.lib :COMP echo delete files. del /q %OBJ_PATH%*.* echo compiling. rem FOR %a IN (%SRC_FILES%) DO %CC% %CCPARAM% %INC_PTH% %DEF_COM% %a -o %OBJ_PATH%a.o -errors %OBJ_PATH%a.log rem echo create arm archives file. rem %LIB% %LIBPARAM% %LIB_NAME% %OBJ_PATH%*.o %CC% %CCPARAM% %INC_PTH% %DEF_COM% .pgc_gamesbeadmf_bead_playing.c -o %OBJ_PATH%mf_bead_playing.o -errors %OBJ_PATH%mf_bead_playing.log if %errorlevel% = 1 goto errormf_bead_playing
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《CB-T 3862-1999船用机械术语 轴系及传动装置》新解读
- Brand KPIs for health insurance:SBK in Germany-英文培训课件2025.4
- 商贸公司消防管理制度
- 协会业务培训管理制度
- 初中英语七年级下册统编教案 第七单元
- 物理中考二轮复习教案 2图像专题
- 仓储管理提升年活动方案
- 仙桃加油活动方案
- 安徽省合肥市庐阳区2023-2024学年四年级下学期数学期末试卷(含答案)
- 以学定教教研活动方案
- 湖北省武汉市东湖高新区2024年八年级下学期期末数学试题附答案
- MOOC 软件质量保证-西安交通大学 中国大学慕课答案
- 2023年清华大学强基计划生物试题
- 生产效率提高改善方案
- 喷涂理论知识考核试题及答案
- 无抗养殖方案课件
- 《康复护理学基础》期末考试复习题库(含答案)
- 宁波市高一数学试卷-含答案
- 2023-餐饮公司章程范本
- 住宅项目工程总承包(EPC)技术标
- 地下室SBS改性沥青防水卷材施工方案
评论
0/150
提交评论