- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux开发 1. 嵌入式Linux开发环境 2. 嵌入式Linux系统的生成和调试 3. 嵌入式Linux的驱动开发 1. 嵌入式Linux开发环境 概述 GNU工具链 嵌入式Linux开发环境的建立 1. 嵌入式Linux开发环境 嵌入式Linux的开发环境概述 交叉开发环境 交叉开发:开发的系统与运行的系统不同 1. 嵌入式Linux开发环境 GNU工具链 包括了构建Linux开发环境所需的编译、链接、调试、软件工程等工具,和其他一些优秀的开源软件共同构建Linux的开发环境 GCC——GNU 编译器集 Binutils——辅助GCC 的主要软件 Gdb——调试器 make——软件工程工具 diff, patch——补丁工具 CVS——版本控制系统 … (一)GNU工具链 GCC(GNU Compiler Collection) 不仅仅是C 语言编译器 目前,GCC 可以支持多种高级语言,如 C、C++ ADA Objective-C、Objective-C++ JAVA Fortran PASCAL (一)GNU工具链 GCC(GNU Compiler Collection) GCC下的工具: cpp —预处理器,GNU C 编译器在编译前自动使用cpp 对代码进行预处理 gcc —符合ISO 等标准的C 编译器 g++ —基本符合ISO 标准的C++ 编译器 gcj —GCC 的java 前端 gnat —GCC 的GNU ADA 95 前端 (一)GNU工具链 GCC的编译过程 与一般的C程序编译过程一样: 预处理 编译成汇编代码 汇编成目标代码 链接 (一)GNU工具链 GCC的主要参数简介(按照编译过程) 预处理:-E参数 使用实例 gcc -E -o gcctest.cpp gcctest.c 或:gcc -E gcctest.c gcctest.cpp 使用wc 命令比较预处理后的文件与源文件,可以看到两个文件的差异 (一)GNU工具链 GCC的主要参数简介(按照编译过程) 汇编:-S参数 生成汇编代码后停止工作 使用实例 gcc -S gcctest.c (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成目标代码: -c,直接编译成目标文件 使用汇编器生成目标文件 使用实例 gcc -c gcctest.c as -o gcctest.o gcctest.s (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成可执行程序:-o参数 由目标代码生成执行代码 gcc -o gcctest gcctest.o 由源文件直接生成可执行代码 gcc -o gcctest gcctest.c (一)GNU工具链 GCC的高级选项 -Wall:打开所有的警告信息 使用实例 (一)GNU工具链 GCC的高级选项 编译优化: -O0:缺省情况,不优化 -O1:基本性能优化,编译速度较快 -O2:尺寸和性能平衡优化,编译速度适中 -O3:极限性能优化,编译速度慢 -Os:极限尺寸优化,编译速度适中 (一)GNU工具链 GNU binutils binutils 是一组二进制工具程序集,是辅助GCC 的主要软件。主要包括: 1. addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号 2. ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。 3. as 是GNU 汇编器,主要用来编译GNU C 编译器gcc 输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object 文件中,该目标文件将由连接器ld 连接 (一)GNU工具链 GNU binutils binutils 是一组二进制工具程序集,是辅助GCC 的主要软件。主要包括: 4.C++filt 解码C++ 符号名,连接器使用它来过滤C++ 和Java 符号,防止重载函数冲突。 5. gprof 显示程序调用段的各种数据 6. ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld 7. nm 列出目标文件中的符号。 8. objcopy 把一种目标文件中的内容复制到另一种类型的目标文件中. (一)GNU工具链 GNU binutils binutils 是一组二进制工具程序集,是辅助GCC 的主要软件。主要包括: 9. objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译
文档评论(0)