GNU编译工具链使用简介.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GNU编译工具链使用简介 张吉豫 zhangjiyu@mprc.pku.edu.cn 2005-03-12 内容 GNU编译工具链的基本组成与工作流程 工具链的常用工具和选项 Unicore工具链与交叉编译 编译工具链的基本工作流程 GNU工具链的组成 GCC——GNU Compiler Collection Binutils——GNU binary utilities Glibc——GNU C Library ——软件开发的基本工具集合 GCC 功能: 高级语言(.c、.cpp、.F)-汇编语言(.s) 用户界面,驱动各工具的执行 组成:一组可执行程序 + 一组库 cpp、gcc、g++、g77 …… cpp0、cc1、cc1plus、f771 …… libgcc.a、crtbegin.o、crtend.o …… 支持多种语言和目标机 Binutils 功能: 汇编语言(.s)-目标文件-可执行程序 查看二进制文件信息 组成:一组可执行程序 as、ld objdump、readelf、ar …… 支持多种目标机 Glibc 功能: 提供语言和操作系统的标准库函数 组成:若干可执行程序 + 大量库 ldd、iconv、locale…… ISO C、POSIX、UNIX、GNU 绝大部分与目标机无关 GNU工具链的工作流程 扩展名的默认含义 需要预处理的源代码:.c、.cc、.F …… 不需预处理的源代码:.i、.ii、.f …… 需要预处理的汇编代码:.S 不需预处理的汇编代码:.s 目标文件:.o 静态库:.a 动态库:.so 常用工具和选项 编译: gcc/g++/g77 汇编和连接: as、ld 二进制工具: objdump、readelf、strip、ar、nm、ldd gprof、gcov 帮助选项 --help --target-help 显示与目标机有关的帮助信息,比如目标机的一些特殊选项 编译(1) gcc/g++/g77 [options] file... -Wall 打印警告信息 -g 添加调试信息到输出文件 -O -O0 -O1 -O2 -O3 -Os 优化选项,若有多个则最后一个有效 -D -U 定义和取消宏定义 -msoft-float 使用软件库(libgcc.a)模拟硬件浮点指令 编译(2) -I 指定头文件搜索路径,若有多个则从前往后搜索 -L 指定库搜索路径,若有多个则从前往后搜索 -l 指定引用的库,从当前位置向后搜索 -static -shared 使用静态连接或动态连接 -pg -fprofile-arcs -ftest-coverage 添加额外的统计代码用于profile,与gprof和gcov配合使用 编译(3) -E 输出预处理后的文件(.i、.ii、.f 等) -S 输出编译生成的汇编文件(.s) -c 输出汇编生成的目标文件(.o) -o 指定输出文件名 -v 输出编译过程的详细信息,包括编译过程中以哪些参数调用了哪些程序。 编译(4) 基于profiling的优化编译 根据程序执行反馈的信息指导编译优化以产生出更好的代码。 使用方法 编译:添加-fprofile-arcs选项和其他优化选项进行编译,生成可执行程序 执行:执行程序,对每个源程序sourcefile生成sourcefile.da,其中保存了统计信息 重新编译:添加-fbranch-probabilities选项和其他相同的优化选项重新编译,生成质量更高的代码 汇编和连接 as [option...] [asmfile...] 汇编器,可由gcc -c代替 ld [options] file... 连接器,可由gcc代替 通常由gcc调用,一般不直接使用 二进制工具 objdump readelf strip ar nm ldd gprof gcov ELF可重定位目标文件示例 二进制工具(1) objdump [option(s)] [file(s)] 反汇编各种格式的目标文件和可执行程序 常用选项: -d 只反汇编代码段 -D 反汇编代码段和数据段 -S 混合输出源代码和汇编代码,编译时必须加-g选项 二进制工具(2) readelf [option(s)] elf-file(s) 显示ELF格式文件信息 常用选项: -e 显示头信息,包括ELF file header、section header、program header -s 显示符号表信息 -r 显示重定位信息 -a 显示所有信息 二进制工具(3) strip [option(s)] in-file(s) 删除输入文件的符号表和指定的section 常用选项: -o 指定输出文件名 二进制工具(4) ar 管理归档文件(*

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档