- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch9_编程语言课件
Linux操作系统;Ch9 编程工具 ;一、GCC;GCC下的工具;GNU Tools—gcc;gcc使用举例(1):源程序;gcc使用举例(2):编译和运行;gcc的编译过程;1、预处理;;预处理文件?汇编代码1)使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译2)使用-S说明生成汇编代码后停止工作
gcc –x cpp-output –S –o gcctest.s gcctest.cpp
;;3、编译成目标代码;;4、编译成执行代码;;gcc的高级选项;根据警告信息检查源程序;修改源程序;优化编译;gcc的优化编译举例(1)考虑如下的源代码;gcc的优化编译举例(2)使用time命令统计程序的运行;二、GNU binutils;as 是GNU汇编器,主要用来编译GNU C编译器gcc输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object文件中,该目标文件将由连接器ld连接
C++filt解码C++符号名,连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。
gprof 显示程序调用段的各种数据。
ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld。;nm 列出目标文件中的符号。
objcopy把一种目标文件中的内容复制到另一种类型的目标文件中.
objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。
ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。
readelf 显示ebf格式可执行文件的信息。;size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。
strings 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。
strip 丢弃目标文件中的全部或者特定符号。; libiberty 包含许多GNU程序都会用到的函数,这些程序有: getopt, obstack, strerror, strtol 和 strtoul.
libbfd 二进制文件描述库.
libopcodes 用来处理opcodes的库, 在生成一些应用程序的时候也会用到它, 比如objdump.Opcodes是文本格式可读的处理器操作指令.;binutils开发工具使用举例;1、ar;使用ar建立库文件(1);使用ar建立库文件(2);库文件使用举例在代码中使用Add和Minus函数;在编译时指定库文件;2、readelf;readelf使用举例;3、ld;ld使用举例(1);ld使用举例(2);目标文件;;三、其他GNU工具;1、GNU Toolchain—gdb ;gdb使用举例;编译并运行;使用gdb调试bug;使用gcc的-g参数;;2、使用GNU make管理项目;;;makefile;Makefile的规则;;一个简单的makefile;Make的工作过程;Makefile 中的变量;;预定义变量;简化后的makefile文件;内部变量;隐含规则 (Implicit Rules);设定目标(Phony Targets);典型的设定目标;Makefile中的函数 (Functions);;makefile中的条件语句;四种条件语句;实际项目中的makefile;autoconf/automake;autoconf/automake;Thanks
文档评论(0)