学习情境2项目1 Vi编辑器

上传人:沙** 文档编号:246729964 上传时间:2024-10-15 格式:PPT 页数:34 大小:375KB
返回 下载 相关 举报
学习情境2项目1 Vi编辑器_第1页
第1页 / 共34页
学习情境2项目1 Vi编辑器_第2页
第2页 / 共34页
学习情境2项目1 Vi编辑器_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,第一级,第二级,第三级,第四级,第五级,Linux,网络服务器配置管理项目实训教程,杨云 等编著,中国水利水电出版社,1,.,项目课题引入,2,.,Vi,编辑器的使用方法,3,.,Linux,中,C,语言程序的编辑,4,.,Linux,中,C,语言程序的运行,5,.,现场演示案例,课题引入,项目背景,在,Linux,操作系统中设计一个,C,语言程序,当程序运行时显示如下的运行效果,:,课题引入,项目分析,完成本项目需要解决的问题:,1,、在,Linux,下我们使用什么工具进行程序和文字的编辑。,2,、在,Linux,操作系统中我们如何编译和运行,C,程序,3,、我们编写的程序如何在,Linux,操作系统中进行调试。,课题引入,教学目标,学习本课需要实现的教学目标:,掌握,Vi,编辑器的启动和退出,掌握,Vi,编辑器的工作模式,熟悉,Vi,编辑器的基本命令,掌握,C/C+,编译器,gcc,的使用,掌握,Linux,下程序设计的一般方法,课题引入,应达到的职业能力,学生学习本课后应该具有的职业能力:,熟练掌握,Vi,编辑器的使用方法,能够利用,Vi,编辑器进行文字编辑工作,能够使用,gcc,进行,C/C+,程序的编译和调试,能够独立完成基本的,Linux,程序,项目问题一,Vi,编辑器的使用,Vi,编辑器包含的主要内容有:,Vi,编辑器的启动与退出,Vi,编辑器的工作模式,Vi,编辑器的常用命令,Vi,编辑器的简介,Vi,是,Visual interface,的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,用户可以根据自己的需要对,Vi,进行定制,这是其他编辑程序所没有的。,Vi,不是一个排版程序,它不像,WORD,或,WPS,那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。,Vi,是全屏幕文本编辑器,它没有菜单,只有命令。,Vi,的启动,在系统提示符后输入,Vi,和想要编辑(或建立)的文件名,便可进入,Vi,如果只输入,Vi,,而不带文件名,也可以进入,Vi,Vi,编辑器的退出,要退出,Vi,,在命令模式下键入如图所示命令。,其中,:,wq,和,:x,是存盘退出,而,:q,是直接退出。可以用,:w,命令保存文件后再用,:q,退出,或用,:,wq,或,:x,命令退出。,如果你不想保存改变后的文件,你就需要用,:q!,命令,这个命令将不保存文件而直接退出,Vi,Vi,的工作模式,Vi,有,3,种基本工作模式:编辑模式、插入模式和命令模式。,进入,Vi,之后,首先进入的就是编辑模式,进入编辑模式后,Vi,等待编辑命令输入而不是文本输入,也就是说这时输入的字母都将作为编辑命令来解释。,在编辑模式下输入插入命令,i,、附加命令,a,、打开命令,o,、修改命令,c,、替换命令,s,都可以进入插入模式。在插入模式下,用户输入的任何字符都被,Vi,当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中(插入模式下),若想回到命令模式下,按,ESC,键即可。,在编辑模式下,用户按“,:”,键即可进入命令模式,此时,Vi,会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“,:”,作为命令模式的提示符,等待用户输入命令。,Vi,编辑器中的常用命令,在编辑模式下,输入如表所示的命令均可进入插入模式,文件相关命令,使用下表中的命令可以在,Vi,中进行文件相关的操作,字符串搜索、替换和删除,使用下表中的命令可以进行字符串的相关操作,文本的复制、删除和移动,使用下表中的命令,可以进行文本的相关操作,在,Vi,编辑器中执行,shell,命令,使用下表中的命令,可以进行,shell,中的命令,项目问题二,C,程序的编译,Linux,应用程序表现为,2,种特殊类型的文件:可执行文件和脚本文件。可执行文件是计算机可以直接运行的程序,相当于,Windows,的,.exe,文件。脚本文件是一组指令的集合,相当于,Windows,的,.bat,文件。,在,POSIX,兼容的系统中,,C,语言编译器被称为,c89.Linux,尽量实现相关标准,,c89,,,cc,和,gcc,这些命令全都指向系统的,C,语言编译器,通常是,GNU C,编译器,或者称为,gcc,。,gcc,编译器,在为,Linux,开发应用程序时,绝大多数情况下使用的都是,C,语言,因此几乎每一位,Linux,程序员面临的首要问题都是如何灵活运用,C,编译器。,GCC,不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如,Java,、,Fortran,、,Pascal,、,Modula-3,和,Ada,等。,开放、自由和灵活是,Linux,的魅力所在,而这一点在,GCC,上的体现就是程序员通过它能够更好地控制整个编译过程。在使用,GCC,编译程序时,编译过程可以被细分为四个阶段:,预处理(,Pre-Processing,),编译(,Compiling,),汇编(,Assembling,),链接(,Linking,),gcc,起步,HelloWorld,在用户当前目录,使用,Vi,编辑器输入如下代码,并保存成文件,hello.c,:,#include,int,main(void,),printf,(Hello world,Linux programming!n);return 0;,然后执行下面的命令编译和运行这段程序:,编译:,gcc,hello.c,-o hello,运行:,./hello Hello world,结果:,Linux programming!,gcc,编译过程,从 程序员的角度看,只需简单地执行一条,GCC,命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。,首先,,GCC,需要调用预处理程序,cpp,,由它负责展开在源文件中定义的宏,并向其中插入“,#include”,语句所包含的内容。,接着,,GCC,会调用,ccl,和,as,将处理后的源代码编译成目 标代码。,最后,,GCC,会调用链接程序,ld,,把生成的目标代码链接成一个可执行程序。,gcc,编译过程,第一步是进行预编译,使用,-E,参数可以让,GCC,在预处理结束后停止编译过程:,gcc,-E,hello.c,-o,hello.i,此时若查看,hello.i,文件中的内容,会发现,stdio.h,的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。,第二步是将,hello.i,编译为目标代码,这可以通过使用,-c,参数来完成:,gcc,-c,hello.i,-o,hello.o,GCC,默认将,.i,文件看成是预处理后的,C,语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用,-x,参数让,GCC,从指定的步骤开始编译。,最后一步是将生成的目标文件链接成可执行文件:,gcc,hello.o,-o hello,gcc,警告提示功能,看看如下,illcode.c,程序,这段代码写得很糟糕,仔细检查一下不难挑出很多毛病:,#include void,main(void,)long,long,int,var,=1;,printf(It,is not standard C code!n);,main,函数的返回值被声明为,void,,但实际上应该是,int,使用了,GNU,语法扩展,即使用,long,long,来声明,64,位整数,不符合,ANSI/ISO C,语言标准,main,函数在终止前没有调用,return,语句。,gcc,警告提示功能,当,GCC,在编译不符合,ANSI/ISO C,语言标准的源代码时,如果加上了,-pedantic,选项,那么使用了扩展语法的地方将产生相应的警告信息:,#,gcc,-pedantic,illcode.c,-o,illcode,illcode.c,:In function main:illcode.c:9:ISO C89 does not support long long illcode.c:8:return type of main is not,int,需要注意的是,,-pedantic,编译选项并不能保证被编译程序与,ANSI/ISO C,标准的完全兼容,它仅仅只能用来帮助,Linux,程序员离这个目标越来越近。或者换句话说,,-pedantic,选项能够帮助程序员发现一些不符合,ANSI/ISO C,标准的代码,但不是全部,事实上只有,ANSI/ISO C,语言标准中要求进行编译器诊断的那些情况,才有可能被,GCC,发现并提出警告。,除了,-pedantic,之外,,GCC,还有一些其它编译选项也能够产生有用的警告信息。这些选项大多以,-W,开头,其中最有价值的当数,-Wall,了,使用它能够使,GCC,产生尽可能多的警告信息:,#,gcc,-Wall,illcode.c,-o,illcode,illcode.c:8:warning:return type of main is not,int,illcode.c,:In function main:illcode.c:9:warning:unused variable,var,GCC,给出的警告信息虽然从严格意义上说不能算作是错误,但却很可能成为错误的栖身之所。,一个优秀的,Linux,程序员应该尽量避免产生警告信息,使自己的代码始终保持简洁、优美和健壮的特性,。,gcc,警告提示功能,在处理警告方面,另一个常用的编译选项是,-,Werror,,它要求,GCC,将所有的警告当成错误进行处理,这在使用自动编译工具(如,Make,等)时非常 有用。如果编译时带上,-,Werror,选项,那么,GCC,会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改。只有当相应的警告信息消除时,才 可能将编译过程继续朝前推进。执行情况如下:,gcc,-Wall-,Werror,illcode.c,-o,illcode,cc1:warnings being treated as errors illcode.c:8:warning:return type of main is not,int,illcode.c,:In function main:illcode.c:9:warning:unused variable,var,对,Linux,程序员来讲,,GCC,给出的警告信息是很有价值的,它们不仅可以帮助程序员写出更加健壮的程序,而且还是跟踪和调试程序的有力工具。,建议在用,GCC,编译源代码时始终带上,-Wall,选项,并把它逐渐培养成为一种习惯,这对找出常见的隐式编程错误很有帮助。,项目问题三,C,程序的调试运行,我们编写的程序经过编译之后可以使用如下方法进行运行:,./,生成的程序名(其中“,./”,表示当前的工作目录),将生成的程序目录加入到系统搜索路径的,PATH,变量(我们将在,Shell,编程课程中进行介绍),如果编译过程出现错误,需要进行程序的调试,这时我们需要使用的工具是,gdb,程序调试工具,gdb,对于,Linux,程序员来讲,,GDB,(,GNU Debugger,)通过与,GCC,的配合使用,为基于,Linux,的软件开发提供了一个完善的调试环境。,默认情况下,,GCC,在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文件的大小。如果需要在编译时生成调试符号信息,可以使 用,GCC,的,-g,或者,-,ggdb,选项。,使用任何一个调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程序在执行时的开销,因此调试选项通常仅在软件的开发和调试阶段使用。,程序调试工具,gdb,我们使用如下代码说明,gdb,的使用:,#include,int,main(void,),int,input=0;,printf(Input,an integer:);,scanf(%d,input);,printf(The,i
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!