• 赞助网站
  • 您的位置:  首页 >> 技术交流区 >> SUNPLUS >> GNU Tools开发工具简介
    GNU Tools开发工具简介
    2011年12月05日 点击: 编辑: 江南闲人
    GNU开发工具
    为了有效地进行嵌入式开发,至少需要了解和掌握如下几类工具:
    编译开发工具:即能够把一个源程序编译生成一个可执行程序的软件,如gcc等。
    调试工具:即能够对执行程序进行源码或汇编级调试的软件,如gdb等。
    软件工程工具:用于协助多人开发或大型软件项目的管理的软件,如make、cvs等。

    具体来说,我们需要对如下软件有一定了解:

    (1)GCC
    很多人把GCC看成只是一个C编译器,其实GCC是GNU Compiler Collection的简称,目前,GCC可以支持C、C++、ADA、Object C、JAVA、Fortran、PASCAL等多种高级语言。GCC主要包括如下一些工具。
    cpp,GNU预处理器
    gcc,符合ISO标准的C编译器
    g++,符合ISO标准的C++编译器
    gcj,gcj是GCC的java前端,可以生成执行速度更快的二进制本地执行码,而不是java byte code。gcj为把java程序编译成机器代码提供了试验性的支持。要做到这点,用户还需要安装相关的java运行时库。
    gnat,是GCC的GNU ADA 95前端,该软件包括开发工具、文档及ADA 95编译器。

    (2)binutils
    binutils是一组二进制工具程序集,它包括addr2line、ar、as、gprof、ld、nm、objcopy、objdump、ranlib、size、strings、strip等工具,是辅助GCC的主要软件。
    as,GNU汇编器(Assembler),用于把汇编代码转换成二进制代码,并存放到一个object文件中。
    ld,GNU链接器(Linker),主要用于确定相对地址,把多个object文件、起始代码段、库等链接起来,并最终形成一个可执行文件。
    addr2line,把执行程序中的地址映射到源文件中的对应行。
    ar,创建归档文件(Archive)、修改/替换库中的object文件,向库中添加/提取object文件。
    c++filt,解码C++符号名。
    nm,列出object文件中的符号名。
    objcopy,复制和转换object文件。
    objdump,用来显示对象文件的信息。
    ranlib,根据归档文件(Archive)中内容建立索引。
    readelf,显示elf格式执行文件中的各种信息。
    size,显示object文件和执行文件各节(Section)的大小。
    strings,显示可执行文件中字符串常量。
    strip,去掉执行文件中多余的信息(如调试信息),可以减少执行文件的大小。
    gprof,用来显示调用图表档案数据。

    (3)gdb
    gdb是GNU调试器,它允许调试用C、C++或其它语言编写的程序。它的基本运行方式是在一个shell环境下用命令行方式调试程序和显示数据。如果加上一些图形前端(如DDD等软件),则可以在此一个更方便的图形环境下调试程序。

    (4)make
    GNU make是一个用来控制可执行程序的生成过程,从其它的源码程序文件中生成可执行程序的GNU工具。GNU make允许用户生成和安装软件包,而无需了解生成、安装软件包的具体执行过程。

    (5)diff/diff3/sdiff
    diff/diff3/sdiff是比较文本差异的工具,也可以用来产生补丁。

    (6)patch
    patch是补丁安装程序,可根据diff生成的补丁来更新程序。

    (7)CVS(Concurrent Version System)
    CVS是一个版本控制系统。它能够记录文件的修改历史(通常但并不总是包括源码)。CVS只存储版本之间的区别,而不是你创建的文件的每一个版本。CVS还保留一个记录改变者、改变时间以及改变原因的日志。CVS对于管理发行版本和控制在多个作者间同时编辑源码文件很有帮助。CVS为一个层次化的目录提供版本控制,目录由修改控制的文件组成,而不是在一个目录中为一组文件提供版本控制。这些目录和文件可以被合并起来构成一个软件发行版本。
    赞助网站 | 关于我们 | 版权声明 | 站点导航 | 收藏本站 | 设为首页