嵌入式GNUC开发工具链剖析.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
make的工作过程 现在来看一下make做的工作: 首先make按顺序读取makefile中的规则, 然后检查该规则中的依赖文件与目标文件的时间戳哪个更新 通过以上的分析过程,可以看到make的优点,因为.o目标文件依赖.c源文件,源码文件里一个简单改变都会造成那个文件被重新编译,并根据规则链依次由下到上执行编译过程,直到最终的可执行文件被重新连接。 例如,当改变一个头文件的时候,由于所有的依赖关系都在Makefile里,因此不再需要记住依赖此头文件的所有源码文件,make可以自动的重新编译所有那些因依赖这个头文件而改变了的源码文件,如果需要,再进行重新连接 gnu的编译工具不但可以编译程序,甚至可以编译linux内核 第8讲 GNU C 开发工具链 1 GNU开发工具简介 GNU开发工具 自由软件 完备的工具链: GCC、binutils、gdb、 GNU make、patch、CVS 、开发库 命令行方式:使用稍复杂、功能强大 下载: GNU Tools开发工具组成 GNU Tools是linux环境下最主要的开发工具集,主要有以下几个部分: 编译开发工具:把源程序编译为可执行文件,如gcc。 调试工具:对执行程序进行源码或汇编级调试的软件,如gdb。 软件工程工具:用于协助多人开发或大型软件项目的管理的软件,如make、cvs等。 GCC(GNU Compiler Collection) 支持C、C++、ADA、Object C、Java、Fortran、PASCAL等语言。 主要包括: cpp:GNU C编译器的预处理器。 gcc:符合ISO标准的C编译器。 g++:基本符合ISO标准的C++编译器。 gcj:GCC的java前端。 gnat:GCC的GNU ADA 95的前端。 binutils 是一组二进制工具程序集合,是辅助GCC的主要软件。 主要包括: as:GNU汇编器 ld:GNU链接器 ar:创建归档文件,向库中添加/提取obj文件 nm:列出obj文件中的符号 objcopy:复制和转化obj文件 binutils objdump:显示对象文件的信息 ranlib:根据归档文件中内容建立索引 readelf:显示elf格式执行文件中的各种信息 size:显示object文件和执行文件各段的总大小 strings:显示文件中可以打印的字符 strip:去掉执行文件中多余的信息(如调试信息) gprof:用来显示图表档案数据 GNU开发工具的使用 2 GCC 的使用 基本语法 gcc [options] [filenames] 说明: 在gcc后面可以有多个编译选项,同时进行多个编译操作。很多的gcc选项包括一个以上的字符。因此你必须为每个选项指定各自的连字符。例如,下面的两个命令是不同的: gcc -p -g test1.c gcc -pg test1.c 当你不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件。 gcc选项 -o选项 你能用 -o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.out。 例:gcc –o count count.c -c选项:告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤。这个选项使用的非常频繁,因为它使得编译多个C程序时速度更快并且更易于管理。缺省时GCC建立的目标代码文件有一个.o的扩展名。 例:gcc –c test2.c gcc选项 -E 只运行 C 预编译器。 -S 编译选项告诉 gcc 在为 C 代码产生了汇编语言文件后停止编译。 -shared 生成共享目标文件。通常用在建立共享库时。 -static 禁止使用共享连接。 警告选项: 在gcc中用开关-Wall控制警告信息,使用示例命令如下: gcc –Wall -o test3_1 test3_1.c -w 不生成任何警告信息。 查找选项 gcc一般使用默认路径查找头文件和库文件。如果文件所用的头文件或库文件不在缺省目录下,则编译时要指定它们的查找路径。 -I选项:指定头文件的搜索目录 例: gcc –I/export/home/st –o test1 test1.c -L选项:指定库文件的搜索目录 例: gcc –L/usr/X11/R6/lib –o test1 test1.c 多个源文件生成一个可执行文件 问题:有多个源文件时,如何生成一个可执行文件? 方法1:gcc –Wall –o mytest test1.c test2.c test3.c 方法2: gcc-Wall -c test1.c gcc-Wall –c test2.c

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档