查看: 2281|回复: 0

Demotop编译系统-最简单易用的跨平台编译系统

[复制链接]

该用户从未签到

发表于 2013-7-3 16:22:38 | 显示全部楼层 |阅读模式
分享到:
Demotop是一款简单灵活的编译系统,专应用于嵌入式软件系统开发,它将使你的嵌入式软件系统开发的工程编译管理变得非常简便。
Demotop编译系统可以支持对多操作系统的跨CPU平台的编译管理,使工程实现快速跨平台开发。
Demotop允许你对工程目录结构进行完全自定义。
为了方便工程引用外部SDK软件,可以添加对SDK的编译管理支持,其中包括,编译SDK,并获取SDK所提供的库文件到本地工程的SDK专用目录中。
官方网址:www.demotop.com
 
特性介绍


    跨操作系统和CPU平台编译管理


        可根据所需的开发操作系统,为Demotop编译系统扩展编译工具链和编译规则,从而实现工程的跨平台编译,目前Demotop已经支持了Linux和VxWorks操作系统编译管理;


    丰富的编译管理命令集


        Demotop已经集成了工程维护管理命令,工程编译命令,工程调试命令的丰富的编译管理命令集,并且可根据功能需求,在Demotop编译系统中扩展所需的应用功能;


    二级模块编译管理


        根据工程需求,可定义任意多个二级模块结构的工程源码,轻松实现复杂的工程模块源码结构,并实现单模块的编译管理功能;


    自定义工程目录框架和模块样式


        工程目录框架可以任意定义,工程二级模块,即最终模块的模块目录结构可自行定义,可以有单独的源码目录和头文件目录,也不包含任何目录的模块样式;


    工程外部SDK编译管理控制


        实现了工程对外部SDK的编译管理控制功能,根据在Demotop中注册的SDK的路径信息,可以实现如编译SDK,获取SDK库文件到工程中等操作;


    反汇编调试功能


        可根据地址和函数等信息,反汇编并定位指定的地址或者函数,以达到反汇编调试的目的,如根据异常打印信息中RA异常返回地址,来定位异常的反汇编位置;


    三级配置文件等级设计


        最基本的配置信息,如工程模块结构等信息在工程顶层Makefile中配置,通用的Demotop配置信息(OS无关信息),在Make.config中配置,与OS相关的配置信息则在Make.config-中配置;





 
为了方便开发人员对工程编译及其调试,本编译系统提供了丰富的可用命令,使用”make ?”命令可以查看当前工程所支持的所有有效命令,其中包括了基本编译命令,以及扩展的编译管理命令,以下分别对这些命令进行介绍。
       执行make help命令可以查看该工程所支持的所有通用命令,如下图所示:

图1 vxworks平台make help命令

图2 linux平台make help命令
1 make

       如果是vxWorks平台,make命令默认编译带有符号表的vxWorks镜像文件;如果是linux平台下,则make命令默认编译带有符号表的linux 应用程序可执行目标文件;
2 make vxWorks

       make vxWorks命令编译不带符号表的vxWorks镜像文件,make vxworks(小写vxworks)与该命令等价;
3 make vxWorks.st

       make vxWorks.st命令编译带符号表的vxWorks镜像文件,make vxworks.st(小写vxworks)与该命令等价;
4 makelinux

       make linux命令默认编译带有符号表的linux 应用程序可执行目标文件;
5 makelinux.ns

       make linux命令编译不带有符号表的linux 应用程序可执行目标文件;
6 make clean

       make clean命令用于清除工程所有的目标文件;
7 make create

       make create命令已经在第4节的“创建工程环境”中进行了详细的说明;
8 make upgrade

       在对工程添加了新的模块之后(包括顶级模块以及子级模块,也包括全局包含头文件目录),可以用make upgrade命令来对工程进行更新,并且不用担心原有的模块会被破坏,更不会对原有模块的源文件进行更改,而只会负责添加新的模块单元,建立符合Demotop编译工程规范的模块。
具体是在工程顶层Makefile文件中,在模块配置变量中添加相应的顶级或者子级模块名称,然后,执行make upgrade命令,即可在模块目录结构中生成新的模块目录结构,其中包括了模块的Makefile编译文件,该文件是根据模块配置自动生成,无需修改。在添加生成了相应的模块结构之后,开发人员即可在该模块目录中建立相应的模块源文件进行模块开发。
如果需要删除相应的模块,只需要改变工程顶层Makefile文件中的模块注册结构,即删除相应的模块名称即可。模块中的源文件并不会被自动删除,而需要手动删除。即使模块源文件未被删除,该模块也不再被编译系统管理控制。
9 make auto

       编译系统在编译过程中依赖于各个模块个的各个目录中的不同作用的Makefile编译文件,因此,Demotop编译系统专门设计了相应的Makefile自动生成命令来完成这些工作,即编译系统会根据用户之前配置好的多级模块之间的组织关系,来自动完成工程中的多级模块的Makefile生成配置。
具体使用的命令是make auto,该命令并不是必须被使用到的命令,因为在对整个工程进行编译的时候(即使用工程顶层的make命令,make vxWorks等命令时),会自动完成各级模块的Makefile文件的生成,但是如果在各级模块中的Makefile文件还未生成之前,希望对单模块进行编译调试,则必须首先使用make auto命令。
10 make lib

       make lib命令用于仅编译工程中的所有模块生成相应的库文件,所模块的库文件出现在工程的build目录中;
11 make compress

       对vxworks镜像文件或者linux应用目标文件进行压缩,压缩的方式在相应操作系统平台OS_TYPE对于的Make.config-中进行定义;
12 make tool

       该命令用于查看当前工程所用的编译工具链的命令及其完整路径,如下图所示:

当前所用工具设置与工程的OS平台和CPU平台有关;
13 make show

       make show命令用于显示该工程的参数配置信息,其中所模块名称(Module Name)为该工程所有最终模块的名称,如下图所示:

图5 make show命令
14 make help

       该命令用于显示该工程所支持的所有的基本类命令,如图1或图2所示。
 

       
  •     Demotop编译系统工程之扩展命令使用方法

            2013-06-01   扩展命令
                   通过make help2(或者make h2)可以查看更多该编译系统所支持的编译命令,主要包括了一些调试辅助命令,以及SDK相关支持的命令,如下图所示:
       
         
        1 makefind

               make find命令用于对整个工程中的源文件查找指定的字符串,被查找的字符串存在于make find命令之后,用空格隔开,例如在工程中查找“pthread”字符串,如下所示:
       
        该命令会分别从源文件和头文件中搜索;
        2 makeflib

               make flib命令用于对整个工程中的库文件查找指定的字符串,被查找的字符串存在于make flib命令之后,用空格隔开,可以用于检查某个函数是否存在于工程的库文件中,尤其对于工程的外部库文件的引用,确定是否提供相应的函数,例如在工程中搜索函数comSendRead,如下图所示:
       
        表示在图中所述的两个库文件中存在comSendRead函数命令;
        3 make debug

               make debug命令用于对工程目标镜像文件的反汇编调试,该命令会将输入的字符串进行反汇编查询,主要包括正对特定地址以及函数的查询。典型的应用为,当系统运行出现异常时,可以根据异常信息中的寄存器RA返回地址,使用该命令进行异常定位,获取异常函数名称,进而帮助开发人员定位可能出错的函数位置。例如,执行“make debug 12c110”命令,可以定位反汇编的地址为0x0012c110的汇编程序,如果目标镜像带符号表,那么可以精确定位该地址的函数名,协助开发人员调试,如下图所示:
       
        注意,该命令将自动显示上下文,上下文的行数在Make.config文件中定义,默认为上文15行,下文5行。
        4 make file

               make file命令用于快速打开工程顶层Makefile文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        5 make app

               make app命令用于快速打开工程应用程序初始化入口源文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        6 make compo

               make compo命令用于在VxWorks操作系统平台下时,快速打开VxWorks组件管理文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        7 make param

               make param命令用于在VxWorks操作系统平台下时,快速打开VxWorks组件参数管理文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        8 make config

               make config命令用于快速打开Make.config文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        9 make osconfig

               make osconfig命令用于快速打开Make.config-文件并进行编辑,根据主机环境不同,可以支持GUI编辑工具或者命令行编辑工具,如果同时支持上述两种编辑工具,可以在Make.config文件中设置优先使用的编辑工具;
        10 make bootrom

                 make bootrom命令用于在VxWorks操作系统平台下,编译VxWorks BSP的bootrom.bin,该bootrom.bin可以作为vxWorks镜像引导的bootloader烧录到系统的boot Flash芯片中;
        11 make tree

               make tree命令用于显示当前工程的树结构,如果demotop编译系统所运行的主机环境并不支持tree命令,那么无法执行make tree命令,该命令将不会在帮助命令中显示。下图所执行的该命令显示的是新建时的工程树结构图,以及为各个模块自动生成Makefile编译文件如下图所示:
       
         
        12 make env

               在vxworks操作系统配置下,将会支持该命令,make env命令用于获取该工程所用VxWorks版本的配置信息,及其主要组件的路径配置信息,该命令可以用于检测是否成功的设置了VxWorks版本的相关环境变量,如下图所示:
       
         
        13 make sdk

               make sdk命令用于编译该工程所配置的SDK,如果该工程不支持SDK,即未配置SDK相关参数,执行该命令则会提示“Project do not support SDK!”。
        14 make cleansdk

               make cleansdk命令用于make clean SDK;
        15 make getlib

               make getlib命令用于在对SDK编译完成之后,获取SDK相关平台的库文件,如果工程不支持SDK,即没有配置SDK相关参数,执行该命令则会提示错误;
        16 make help2

               make help2命令用于显示该工程所支持的所有扩展类命令;
         
       

       
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条



手机版|小黑屋|与非网

GMT+8, 2025-1-11 09:52 , Processed in 0.112981 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.