MTK 编译详解以及IncrediBuild联合编译的使用默认分类

本文详细介绍了MTK平台的编译过程,从批处理脚本到Perl脚本make2.pl的执行,再到PC模拟版和ARM版的构建。ARM版构建主要涉及GNU Makefile Gsm2.mak,包括new、update、remake等动作。重点解析了编译链接的步骤,如libs和$(BIN_FILE),以及如何生成库和映像文件。此外,还讨论了IncrediBuild联合编译的使用,包括环境检查、进程数定义、中间编译文件和编译命令,以提高编译效率。
摘要由CSDN通过智能技术生成

10   mtk的make过程详细解释默认分类


 
Make.bat实际上只起引导作用,其只有一行批处理语句perl make2.pl%*,于是运行该批处理文件后控制权转给了perl脚本make2.pl。在这个perl脚本中解析了用户输入的命令行参数,设置变量,准备make时需要的临时配置文件,随后根据生成的可运行映像是PC模拟版还是ARM版而分别调用不同的构建过程。
  Pc模拟版的构建通过调用如下命令实现。
  system("$msdev MoDIS.dsw /MAKE /"$argu - Win32 $modisDir/"
  /OUT ${MoDISLogDir}//${argu}.log")
  在这里$msdev就是VC的msdev,通过VC的工程文件MoDIS.dsw和后面的参数进行具体的构建过程。熟悉VC工程的朋友应该比较清楚,因此就不再具体解释了。之后将只以ARM版为主来讲解整个工程的构建过程。
  ARM版的构建通过调用如下命令实现。
  system("${makeCmd} -f${makeFolder}${myMF} -r -R
  CUSTOMER=$custom PROJECT=$project $action")
  在这里${makeCmd}是tools/make.exe,即GNU的make,${makeFolder}${myMF}是make/Gsm2.mak,$action是new、update、remake等。变量CUSTOMER和PROJECT分别是客户名和项目名,在构建过程中将根据此两个变量的值选定项目相关的配置文件,从而实现客户化的定制。通过给make指定ARM版的核心Makefile文件Gsm2.mak,开始了ARM版的构建过程。
  Gsm2.mak文件中包含了Option.mak这个配置用的Makefile文件,另外还包含了一些以.tmp和.bld为后缀的由perl脚本make2.pl生成的临时配置文件。这些临时配置文件主要是一些action如clean、remake等所需的变量设置,及客户化和版本号等的一些信息。Gsm2.mak控制了new、update、remake等动作的过程。具体分别如下所示。
  new : cleanall cmmgen mmi_feature_check asngen codegen asnregen/
  operator_check_lite update
  
  update : cleanlog cleanbin mcddll_update codegen resgen cksysdrvremake
  remake : cleanlog cleanbin genverno libs $(BIN_FILE)done
 
  上面的构建过程的几个步骤中,最重要的两个步骤是libs、$(BIN_FILE)。libs调用ARM版的编译器和连接器将各个模块目录下的C文件编译链接为独立的库。$(BIN_FILE)这个步骤将各个模块编译链接得到的库和mtk_lib目录下的库一起链接起来得到一个映像文件,然后使用ADS的工具fromelf将映像文件生成以变量BIN_FILE命名的二进制文件,该文件可以下载到硬件板上运行。
  libs这个步骤如下所示。
  
  libs: cleanlib startbuildlibs $(COMPLIBLIST)
  libs中真正进行编译链接的步骤是$(COMPLIBLIST),要生成的库由变量COMPLIBLIST列出,在ARM版中,变量COMPLIBLIST从变量COMPLIST得到。变量COMPLIST是在Option.mak及其包含的Makefile文件中赋值的。因有很多库需要编译链接,变量COMPLIBLIST展开后包含多个步骤,而这些步骤都是重复不变的,因此在定义步骤$(COMPLIBLIST)的构建过程时使用%.lib代替。%.lib这个步骤先清除了之前的一些依赖关系文件,将一些变量的设置写入~compbld.tmp这个临时文件中,然后给make指定Makefile文件comp.mak,完成库的编译和链接,如下所示。
  %.lib:
  …
  @if /I %OS% EQU WINDOWS_NT /
  (if /I $(BM_NEW) EQU TRUE /
  (tools/make.exe -fmake/comp.mak -k -r -R $(strip $(CMD_ARGU))COMPONENT=$* >$(strip $(COMPLOGDIR))/$*.log2>&1)
  /
  else /
  (tools/make.exe -fmake/comp.mak -r -R $(strip $(CMD_ARGU))COMPONENT=$* >$(s

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值