VIM编辑器与GCC编译器讲解课件_第1页
VIM编辑器与GCC编译器讲解课件_第2页
VIM编辑器与GCC编译器讲解课件_第3页
VIM编辑器与GCC编译器讲解课件_第4页
VIM编辑器与GCC编译器讲解课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学内容Vim编辑器Gcc编译器与gdb调试器Makefile的编写第1页,共40页。教学要求掌握vim编辑器的常用命令,能够熟练使用vim编辑器编写C语言程序掌握gcc编译器及gdb调试器的使用,能够编写简单的makefile文件重点:vim的常用命令、makefile的编写第2页,共40页。3第二节Vim编辑器第3页,共40页。VIM编辑器vi简介Linux系统的第一个全屏幕编辑器不是一个排版程序,只是一个文本编辑程序没有菜单、只有相当丰富的命令Vi有三种工作模式:命令行模式、文本输入模式、末行模式Linux下有很多编辑器,最典型的是gedit和vimgedit是界面操作,跟Windows

2、上的编辑器差不多vi则是命令交互的编辑器第4页,共40页。VIM编辑器任何时候,只要按一下ESC键,即可进入vi命令行模式在shell环境下输入启动vi命令,进入编辑器时,也是该模式注意:此时输入的字符都被当做编辑命令来解释并且输入的命令并不在屏幕上显示出来命令行模式第5页,共40页。VIM编辑器命令行模式下输入如下命令可以进入文本输入模式插入命令i、I附加命令a、A打开命令o、O修改命令c(cw、cc、c$)取代命令r、R此时用户输入的任何字符都被vi当做文本内容保存起来文本输入模式第6页,共40页。VIM编辑器在命令行模式下,用户按“:”键可进入末行模式此时vi会在现实窗口的最后一行显示一

3、个“:”作为提示符,等待输入命令大部分管理命令就是在这里输入的末行命令执行完后,vi自动回到命令模式末行模式三种模式切换方法如图:第7页,共40页。VIM编辑器vi编辑器启动使用vi进行编辑第一步是进入编辑界面,一般方法为:$ vi filename请尝试创建新文件并编辑一段简单的C程序第8页,共40页。VIM编辑器显示vi中的行号当编辑的文件较大时,人工确认行号不方便需通过vi的命令确认行号,在末行模式中输入:set nu同样,如果想取消显示行号,则在末行模式中输入:set number或:set nonu:set nonumber或第9页,共40页。VIM编辑器光标移动操作在vi操作中,不

4、建议使用上下左右四个箭头移动光标,而是:h 左移 j 下移 k 上移 l 右移这几个字符跟数字键组合,可以移动多个位置,比如3j 光标下移3行 5h 光标左移3格H 移至屏幕上端 L 移至屏幕下端 M 移至屏幕中央gg 到第一行 G 到最后一行nG 到第n行: n 到第n行第10页,共40页。VIM编辑器移动光标还有如下几个常用命令或数字0:光标移动到行首$:光标移动到行尾w:光标跳转到下一个字首,按标点或单词分割W:光标跳转到下一个字首,长跳,比如end-of-line是一个字e:光标跳转到下一个字尾E:光标跳转到下一个字尾,长跳b:光标跳转到上一个字,按标点或单词分割B:光标跳转到上一个字

5、,长跳第11页,共40页。VIM编辑器屏幕命令屏幕命令是以屏幕为单位去移动光标,常用于文件的滚屏和分页Ctrl+U:将屏幕向前(文件头方向)翻滚半屏Ctrl+D:将屏幕向后(文件尾方向)翻滚半屏Ctrl+F:将屏幕向后(文件尾方向)翻滚一屏Ctrl+B:将屏幕向前(文件头方向)翻滚一屏第12页,共40页。VIM编辑器文本插入命令i:插入文本从光标所在位置前开始I:将光标移动到当前行的行首,然后在其前插入文本文本附加命令a:在光标当前位置之后追加新文本A:将光标移动到所在行的行尾,从那里开始插入新文本文本修改命令o:在光标的下面新开一行,并定位到该行的行首,等待输入O:在光标的上面插入一行,并定

6、位到该行的行首,等待输入第13页,共40页。VIM编辑器文本修改命令删除删除单个字符x:删除光标处的字符nx:删除光标所在位置开始向右的n个字符(n是具体的数字)X:删除光标前面的那个字符nX:删除光标前面向左的n个字符(n是具体的数字)第14页,共40页。VIM编辑器删除多个字符dd:删除光标所在当前行D或d$:删除从光标所在处开始到行尾的内容d:删除从光标前一个字符开始到行首的内容dw:删除一个单词dG:删除光标所在行到末尾所有内容:n1,n2d 删除n1到n2行第15页,共40页。VIM编辑器复制和剪切命令yy、Y 复制当前行nyy、nY 复制当前行以下n行dd 剪切当前行ndd 剪切当

7、前行以下n行p、P粘贴在光标所在行下或行上替换和重复命令r 取代光标所在处字符R 从光标所在处开始替换字符,直到按ESC结束. 重复上一次命令操作第16页,共40页。VIM编辑器搜索和替换/string 搜索指定字符串string:set ic 搜索时忽略大小写;:set noic区分大小写n 下一个搜索到的位置;N上一个搜索到的位置:%s/old/new/g 全文替换,将old替换为new,g不需确认:n1,n2s/old/new/c 指定行替换,c需要确认第17页,共40页。VIM编辑器文本修改命令取消取消上一个命令,也称复原命令可以取消前一次的误操作或不合适的操作对文件的影响u:取消刚才

8、的操作,可取消多次,直到最初状态U:取消刚才的操作,只取消前一步操作文本修改命令恢复恢复刚刚取消的命令可以把刚通过u命令取消的操作,重新输入Ctrl + r:恢复刚才取消的内容第18页,共40页。VIM编辑器退出vi编辑完文件后,准备退出vi返回shell时,可以在末行模式下,使用如下方法::w newfile 保存文件为newfile,但并不退出:q 退出vi。如果未保存,vi将提示不能退出:wq newfile 保存并退出:q! 强制退出,不保存:x 如果修改过,则保存退出;如果未修改过,则直接退出ZZ 快捷键,保存修改并退出第19页,共40页。VIM编辑器设置vi可以通过/.vimrc文

9、件对vi进行默认的设置也可在末行模式中设置set nu:显示行号syntax on:语法高亮(编程时适用)set undolevels=200:undo最大次数set ignorecase:忽略大小写set autoindent:自动缩进(编程时适用)set tabstop=4:设置tab键的宽度第20页,共40页。VIM编辑器多窗口、多文件命令模式下输入:e file可以再打开一个文件,并且此时vim里会显示出file文件的内容。同时显示多个文件::sp /水平切分窗口:vsplit /垂直切分窗口文件间切换Ctrl+6 /两文件间的切换窗口间切换的方法Ctrl+w+方向键切换到前下上后一个

10、窗格Ctrl+w+h/j/k/l 同上Ctrl+ww依次向后切换到下一个窗格中第21页,共40页。GCC编译器介绍gccgcc是gnu推出的功能强大、性能优越的多平台编译器可以在多种平台上编译出可执行程序的编译器集合这里以C语言为标准来介绍gccgcc的编译流程分为4个步骤,如下第22页,共40页。GCC编译器该阶段,编译器会将代码中的stdio.h编译出来用户可以使用gcc的选项“-E”进行查看预编译步骤$ gcc -E hello.c -o hello.i留意生成的hello.i文件预编译的过程,其实是把stdio.h的内容插入hello.i文件中第23页,共40页。GCC编译器该阶段,编

11、译器会将C代码转化为汇编代码使用gcc的-S选项进行查看编译步骤$ gcc -S hello.i -o hello.s留意生成的hello.s文件第24页,共40页。GCC编译器该阶段,编译器会将汇编代码转化成目标文件使用gcc的-c选项进行汇编步骤$ gcc -c hello.s -o hello.o链接步骤$ gcc hello.o -o hello该阶段,编译器会将目标文件和函数库进行链接最终生成可执行的二进制文件执行步骤$ chmod 755 hello$ ./hello第25页,共40页。GCC编译器gcc基本用法和常用选项gcc命令的基本用法如下:$ gcc options fil

12、ename前面介绍的4个步骤,我们可以一次全部执行,如下:$ gcc hello.c -o hello当没有指定-o选项时,默认生成的可执行文件为a.out$ gcc hello.c$ ./a.out第26页,共40页。GCC编译器gcc命令的的常用参数如下:-c:只激活预处理、编译、汇编,只编译成obj文件,不链接-S:只激活预处理、编译,把文件编译成汇编代码-E:只激活预处理,不生成文件,不编译-o:指定目标名称,当不指定时则默认为a.out-i file:包含某个代码,功能相当于在代码中使用#include-I dir:首先在指定目录查找#include指定的文件-l library:指

13、定编译时使用的库-L dir:指定编译时搜索库的路径-O0、-O1、-O2、-O3:编译器的优化选项的4个级:0没有优化、1是默认、3是最高-g:指定编译器在编译时产生调试信息(参考gdb一节)-Wall:显示附加的警告消息第27页,共40页。28第二节gdb调试器第28页,共40页。GDB调试器gdb简介gdb能在程序运行时,观察程序的内部结构和内存堆栈情况gdb主要功能如下:监视程序中变量的值设置程序断点逐行执行代码第29页,共40页。GDB调试器gdb调试时常用的命令如下:命令说明file装入想要调试的可执行文件kill终止正在调试的程序list列出产生执行文件的源码的一部分next执行

14、一行源代码但不进入函数内部step执行一行源代码并且进入函数内部run执行当前被调试的程序quit终止gdbwatch监视一个变量的值而不管它何时被改变break在代码中设置断点,使程序执行到这里时被挂起make不退出gdb情况下,可以重新产生可执行文件shell不离开gdb,执行UNIX shell命令观察老师演示的gdb实验第30页,共40页。31第三节Makefile第31页,共40页。MakefileMakefile文件利用make工具,可以将大型项目分解成多个更容易管理的模块方便管理人员梳理各个源文件之间复杂的关系一个make命令,可以编译不同目录下的多个源文件make工具最主要最基

15、本的功能是通过makefile文件来描述源程序之间的相互关系,并自动维护编译工作如果一个目录下没有Makefile文件,输入make命令,系统报错第32页,共40页。MakefileLinux系统中,习惯使用Makefile文件名编译是输入make命令即可$ make f Makefile.debug如果要使用其他文件(一般不建议),则需要通过-f选项指定$ make第33页,共40页。Makefile假设一个工程中包含filea.c、fileb.c、test.c三个文件如果用gcc编译这个工程,需要$ make现在我们使用Makefile对这个工程进行管理,则建立Makefile文件$ gc

16、c -c filea.c o filea.o$ gcc -c fileb.c o fileb.o$ gcc -c test.c o test.o$ gcc filea.o fileb.o test.o o prog然后输入命令Makefile将自动帮我们进行编译第34页,共40页。Makefile现在我们简单分析一下这个Makefile文件指定prog程序由3个目标文件filea.o、fileb.o、test.o链接生成prog: filea.o fileb.o test.ogcc filea.o fileb.o test.o -o progfilea.o: filea.cgcc -c filea.c指定目标文件filea.o由filea.c编译生成注意:如果filea.c文件在编译之后被修改则make可以自动重新编译filea.o,最后再生成新的prog第35页,共40页。MakefileMakefile作为一种描述文档一般需要包含如下内容宏定义源文件之间的相互依赖关系可执行的命令$(CFLAGS)Makefile使用简单的宏指代源文件或编译信息,Linux中称为宏变量在引用宏时,需要在变量前加$符号,并把变量用()包含起来使用宏定义可以使用户脱离

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论