欢迎来到天天文库
浏览记录
ID:59416614
大小:1.48 MB
页数:32页
时间:2020-09-19
《Linux下的C 编程工具介绍ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux下的C编程相关工具内容:1.Vi编辑器介绍2.Gcc编译器介绍3.Gdb调试器介绍1.Vi编辑器介绍1.1Vi的模式Vi是Linux系统的第一个全屏幕交互式编辑程序,Vi有三种模式,分别为命令行模式,插入模式及底行模式:(1)命令行模式用户在用Vi编辑文件时,最初进入的为命令行模式(2)插入模式只有在该模式下,用户才能进行文字编辑输入,用户按“Esc”键回到命令行模式.(3)底行模式在该模式下,光标位于屏幕的底行.用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串,列出行号等.1.2Vi的基本流程(1)进入Vi
2、,即在命令行下键入“viHello”(文件名),此时进入的是命令行模式,光标位于屏幕的上方。(2)在命令行模式下键入“i”进入到插入模式,在该模式下可以输入文字信息。(3)最后,在插入模式中,输入“Esc”,则当前模式转入命令行模式,输入“:”进入底行模式。接着输入“wq”,存盘退出。1.3Vi各模式的功能键(1)命令行模式常用的功能键如下:(2)插入行模式功能键,只有“Esc”。(3)底行模式常用功能键如下:2.GCC介绍GNUCC(简称为Gcc)是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C++等语言编写的程序,而且
3、Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。后缀名对应的语言后缀名对应的语言.cC原始程序.s/.S汇编语言原始程序.C/.cc/.cxxC++原始程序.h预处理文件(头文件).mObjective-C原始程序.o目标文件.i已经过预处理的C原始程序.a/.so汇编后的库文件.ii已经过预处理的C++原始程序Gcc所支持文件后缀名解释2.1Gcc编译流程解析Gcc的编译流程分为了4个步骤,分别为:•预处理•编译•汇编•链接以下分析Gcc是如何完成4个步
4、骤的首先,有以下hello.c源代码:预处理阶段在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用Gcc的选项“–E”进行查看,该选项的作用是让Gcc在预处理结束后停止编译过程。在此处,选项“–o”是指定目标文件,“.i”文件为已经过预处理的C原始程序。以下列出了hello.i文件的部分内容:由此可见,Gcc确实进行了预处理,把“stdio.h”的内容插入到hello.i文件中。(2)编译阶段在此阶段,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语
5、言,可以使用“-S”选项来查看。以下列出了hello.s文件的内容,可见已经转化为汇编了。汇编阶段汇编阶段是把编译阶段生成的“.s”文件转成目标文件,使用选项“-c”就可以看到汇编代码已转化为“.o”的二进制目标代码了,命令如下:(4)链接阶段hello.c程序中的“printf”函数,在“stdio.h”中声明,最终的实现都被做到名为libc.so.6的库文件中去了,在没有特别指定时,Gcc会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到libc.so.6库函数中去,这样就实现函数“printf”了,而这也就是链接
6、的作用。使用如下命令完成链接,生成可执行文件。运行可执行文件,得到正确结果:一步实现:3.Gdb调试器Gdb调试器是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。首先,建立如下test.c程序用如下指令对test.c进行编译,一定要加上选项“–g”,这样编译出的可执行代码中包含调试信息。接下来用“gdbtest”命令启动gdb进行调试,可见,在gdb的启动画面中指出了Gdb的版本号,使用的库文件等信息。(1)查看文件在Gdb中键入“list”,就可以查看所载入的文件,如下所示:(2)设置断点在Gdb中设置断点,只需用
7、命令“breakn”,其中n表示程序运行到第n行时,暂停运行。(3)查看断点情况输入“infobreak”可以查看断点情况(4)运行代码输入“run”后开始运行程序,到断点处停止。(5)查看变量值在Gdb中键入“print变量”就可查看断点处相关变量的值。i的值目前还未赋值,只是一个随机的数字。(6)单步执行单步执行可以用命令“next”或“step”.区别在于“step”将进入调用函数内部,而“next”不会。执行“next”命令结果如下:执行“step”命令结果如下:(7)恢复程序执行用命令“continue”来恢复程序的正常运行
8、。,这时,会把剩余还未执行的程序执行完,并显示执行结果。
此文档下载收益归作者所有