GNU工具链简介.ppt
xlanchen@2007.5.22 Embedded Operating Systems Linux操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 xlanchen@ustc.edu.cn 3606864-83(西区电三421) Autumn 2007 “工欲善其事, 必先利其器” --《论语》 相关工具介绍 开发工具 分析工具 GNU Tools简介 GNU tools GNU tools和其他一些优秀的开源软件可以完全覆盖上述类型的软件开发工具。为了更好的开发嵌入式系统,需要熟悉如下一些软件 GCC Binutils—辅助GCC的主要软件 Gdb make cvs 一、GCC 很多人认为GCC只是一个C编译器,其实GCC = GNU Compiler Collection 目前,GCC可以支持多种高级语言,如 C、C++ ADA Object C JAVA Fortran PASCAL GCC下的工具 cpp — 预处理器GNU C编译器在编译前自动使用cpp对用户程序进行预处理 gcc — 符合ISO等标准的C编译器 g++ — 基本符合ISO标准的C++编译器 gcj — GCC的java前端 gnat — GCC的GNU ADA 95前端 GNU Tools—gcc gcc是一个强大的工具集合,它包含了预处理器、编译器、汇编器、链接器等组件。它会在需要的时候调用其他组件。输入文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。 对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要 gcc使用举例(1)源程序 gcc使用举例(2)编译和运行 gcc的工作过程(1) 如果使用-v选项,则可以看到许多被隐藏的信息 gcc的编译过程 一般情况下,c程序的编译过程为 1、预处理 2、编译成汇编代码 3、汇编成目标代码 4、链接 1、预处理 预处理:使用-E参数输出文件的后缀为“.cpp” gcc –E –o gcctest.cpp gcctest.c 使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异 2、编译成汇编代码 预处理文件?汇编代码1)使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译2)使用-S说明生成汇编代码后停止工作 gcc –x cpp-output –S –o gcctest.s gcctest.cpp 也可以直接编译到汇编代码 gcc –S gcctest.c 3、编译成目标代码 汇编代码?目标代码 gcc –x assembler –c gcctest.s 直接编译成目标代码 gcc –c gcctest.c 使用汇编器生成目标代码 as –o gcctest.o gcctest.s 4、编译成执行代码 目标代码?执行代码 gcc –o gcctest gcctest.o 直接生成执行代码 gcc –o gcctest gcctest.c gcc的高级选项 -Wall:打开所有的警告信息 根据警告信息检查源程序 修改源程序 优化编译 优化编译选项有: -O0缺省情况,不优化 -O1 -O2 -O3 等等 gcc的优化编译举例(1)考虑如下的源代码 gcc的优化编译举例(2)使用time命令统计程序的运行 二、GNU binutils binutils是一组二进制工具程序集,是辅助GCC的主要软件,它主要包括 addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。 ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。 as 是GNU汇编器,主要用来编译GNU C编译器gcc输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object文件中,该目标文件将由连接器ld连接 C++filt解码C++符号名,连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。 gprof 显示程序调用段的各种数据。 ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld。 nm 列出目标文件中的符号。 objcopy把一种目标文件中的内容复制到另一种类型的目标文件中. objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。 ranlib 产生归档文件索引,并将其保存到这个归档文件中。在
您可能关注的文档
- C#程序设计-深圳大学计算机与软件学院.doc
- C++与数据结构实验指导教程.doc
- C++应聘面试常见试题深入剖析.doc.doc
- C++的单元测试-51Testing.doc
- C++程序设计试题-山东自考网.doc
- C++语言实验内容和要求.doc
- C++语言程序设计教程第13章异常处理.ppt
- C2-数据存储安全-数据恢复.ppt
- CALIS引进资源集团共享模式及其案例分析肖珑CALIS文理中心北京.ppt
- CAPWAP隧道技术白皮书.doc.doc
- 语文湖南长沙市炎德英才大联考雅礼中学2026届高三月考试卷(五)(1.6-1.7).docx
- 物理辽宁名校联盟2026届高三年级上学期期末质量检测(1.15-1.16).docx
- 化学湖北荆州中学2025-2026学年高二上学期12月月考(12.24-12.25).docx
- 化学陕西2026年宝鸡市高考模拟检测试题(一)(宝鸡一模)(1.10-1.11).docx
- FANUC机器人 iRVision 智能视觉.pdf
- FANUC机器人点焊-培训教材.pdf
- KUKA电气元器件检修.pdf
- 发那科机器人设置辅助功能FANUC.pdf
- FANUC机器人弧焊教程.pdf
- FANUC双驱及多位置标定功能指导手册.pdf
最近下载
- 安徽省合肥市名校联考2026届数学八年级第一学期期末教学质量检测模拟试题含解析.doc VIP
- 2025年山西职业单招考试真题及答案 完整版2025.pdf VIP
- 区块链基本概念.pptx VIP
- 2021年度“双一流”建设专项资金绩效评价自评报告.pdf VIP
- 劳动法案例分析及参考答案.docx VIP
- 广西左江治旱黑水河现代化灌区工程环境影响报告书.pdf VIP
- FDA热效应评估指南(中文翻译件) thermal effects evaluation.pdf VIP
- 华东理工大学双一流建设中期自评报告.PDF VIP
- 项目环境与职业健康安全管理工作计划.doc VIP
- 人人商城恶意诉讼应诉指南-含胜诉答辩状和证据清单.docx
原创力文档

文档评论(0)