第6章 GNU开发工具链的使用.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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文档。上传文档
查看更多
第6章 GNU开发工具链的使用

Linux应用与开发典型实例精讲 配套教材: 《Linux应用与开发典型实例精讲》 邱铁、于玉龙、徐子川编著. 清华大学出版社. 2010.5 Email: openlinux21@ 第6章 GNU开发工具链的使用 学习本章要达到的目标: 1.学会使用gdb进行程序调试。 2.学会使用make工具管理多文件C语言程序。 3.掌握Linux下应用程序开发的基本流程。 6.1 gcc命令的使用 一个C语言程序的编写需要经过四个步骤 编辑,指程序员通过文本编辑软件录入C语言程序 预处理,指系统进行相应的头文件加载和宏展开等工作 编译,是计算机将C语言程序转化为对应的计算机机器码,生成二进制文件 链接,将二进制文件组合成一个完整的可执行文件 gcc命令的语法: gcc [参数]… [源文件]… 参数说明: -o FILE 指定输出文件名,缺省设置为“a.out”。 -E 仅进行预处理,不进行其他操作。 -S 编译到汇编语言,不进行其他操作。 -c 编译到二进制目标文件,不进行链接。 -g 在可执行文件中包含标准调试信息。 -ggdb 包含gdb调试信息。 参数说明(续) -Wall 尽可能多地显示警告信息。 -Werror 将所有的警告当作错误处理。 -w 禁止所有警告。 -ansi 采用标准的ANSI C进行编译。 -IPATH 设置头文件的路径,可以设置多个,默认路径“/usr/include”。 -LPATH 设置库文件的路径,可以设置多个,默认路径“/usr/lib”。 参数说明(续) -lLIBNAME 设定编译所需的库名称,如果一个库的文件名为“libxxx.so”那么它的库名称为“xxx”。 -static 使用静态链接,编译后可执行程序不依赖于库文件。 -ON 优化编译,主要提高可执行程序得运行速度,N可取值为1、2、3,3是最高的优化等级,优化会导致代码体积增加。 -pipe 编译过程中使用管道作为中间文件的媒介。 参数说明(续) -save-temps 保留编译过程中的中间文件。 -DMACRO 定义宏MACRO。 -Q 显示各个阶段的执行时间。 6.2 调试工具gdb 6.2.1 gdb简介 gdb是GNU环境下的程序调试软件。 gdb拥有强大的调试能力,可以帮助你发现程序中的错误,帮助你提高程序的效率。 gdb是GNU项目下的自由软件,最早由Richard Stallman开发。 6.2.2 gdb的使用方法 gdb是一种命令驱动的调试工具,在运行的过程中,我们需要使用gdb调试命令控制被调试的程序运行。在调试之前,被调试的程序在使用gcc命令编译时,需要加入“-g”参数,以加入gdb调试时所需要的调试信息。 gdb 程序名 文件操作 file PROGRAM 装入待调试的程序,PROGRAM是可执行文件的文件名。 shell COM 在gdb中执行Shell命令。 quit 退出gdb。 查看信息 list [+] 接续上次,向后列出源代码(只显示部分源代码)。 list - 继续上次,向前列出源代码(只显示部分源代码)。 set listsize N 设置每次显示的源代码的行数。 show listsize 查看每次显示源代码的行数。 list L1 L2 显示从行L1到L2的源代码。 查看信息(续) list [FILE:]LINE 显示源文件FILE的第LINE行代码,缺省为当前文件。 list FUN 列出函数FUN的源代码。 print [/F] EXP 以格式F打印表达式的值。F包括:“x”十六进制;“d”十进制;“u”无符号十六进制;“o”八进制;“t”二进制;“c”字符;“f”浮点格式。 whatis VAR 打印变量的类型。 info EXP 显示相应的信息。 查看信息(续) info breakpoint 显示断点设置信息。 info breakpoint N 查看第N个断点的信息。 info watchpoints 查看观察点的信息。 info watchpoints N 查看第N个观察点的信息。 backtrace 查看栈信息。 info line N 查看第N行所对应的内存地址。 show convenience 显示环境变量 info register 查看寄存器的信息。 程序运行控制 run 运行程序。 next 运行下一行代码(越过函数)。 next N 运行下N行代码(越过函数)。 step 运行下一行代码(进入函数)。 step N 运行下N行代码(进入函数)。 finish 结束当前函数,返回上一层函数。 jump LINE 跳到第LINE行执行。 continue 继续执行程序。 kil 中止当前正在调试的程序。

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档