Linux配置优质PPT.ppt

上传人:b****1 文档编号:14314398 上传时间:2022-10-22 格式:PPT 页数:33 大小:455KB
下载 相关 举报
Linux配置优质PPT.ppt_第1页
第1页 / 共33页
Linux配置优质PPT.ppt_第2页
第2页 / 共33页
Linux配置优质PPT.ppt_第3页
第3页 / 共33页
Linux配置优质PPT.ppt_第4页
第4页 / 共33页
Linux配置优质PPT.ppt_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

Linux配置优质PPT.ppt

《Linux配置优质PPT.ppt》由会员分享,可在线阅读,更多相关《Linux配置优质PPT.ppt(33页珍藏版)》请在冰豆网上搜索。

Linux配置优质PPT.ppt

,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语言编译器,通常是GNUC编译器,或者称为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:

#includeintmain(void)printf(Helloworld,Linuxprogramming!

n);

return0;

然后执行下面的命令编译和运行这段程序:

编译:

gcchello.c-ohello运行:

./helloHelloworld结果:

Linuxprogramming!

gcc编译过程,从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。

首先,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容。

接着,GCC会调用ccl和as将处理后的源代码编译成目标代码。

最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。

gcc编译过程,第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:

gcc-Ehello.c-ohello.i此时若查看hello.i文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。

第二步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:

gcc-chello.i-ohello.oGCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。

最后一步是将生成的目标文件链接成可执行文件:

gcchello.o-ohello,gcc警告提示功能,看看如下illcode.c程序,这段代码写得很糟糕,仔细检查一下不难挑出很多毛病:

#includevoidmain(void)longlongintvar=1;

printf(ItisnotstandardCcode!

main函数的返回值被声明为void,但实际上应该是int使用了GNU语法扩展,即使用longlong来声明64位整数,不符合ANSI/ISOC语言标准main函数在终止前没有调用return语句。

gcc警告提示功能,当GCC在编译不符合ANSI/ISOC语言标准的源代码时,如果加上了-pedantic选项,那么使用了扩展语法的地方将产生相应的警告信息:

#gcc-pedanticillcode.c-oillcodeillcode.c:

Infunctionmain:

illcode.c:

9:

ISOC89doesnotsupportlonglongillcode.c:

8:

returntypeofmainisnotint需要注意的是,-pedantic编译选项并不能保证被编译程序与ANSI/ISOC标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。

或者换句话说,-pedantic选项能够帮助程序员发现一些不符合ANSI/ISOC标准的代码,但不是全部,事实上只有ANSI/ISOC语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现并提出警告。

除了-pedantic之外,GCC还有一些其它编译选项也能够产生有用的警告信息。

这些选项大多以-W开头,其中最有价值的当数-Wall了,使用它能够使GCC产生尽可能多的警告信息:

#gcc-Wallillcode.c-oillcodeillcode.c:

warning:

returntypeofmainisnotintillcode.c:

unusedvariablevarGCC给出的警告信息虽然从严格意义上说不能算作是错误,但却很可能成为错误的栖身之所。

一个优秀的Linux程序员应该尽量避免产生警告信息,使自己的代码始终保持简洁、优美和健壮的特性。

gcc警告提示功能,在处理警告方面,另一个常用的编译选项是-Werror,它要求GCC将所有的警告当成错误进行处理,这在使用自动编译工具(如Make等)时非常有用。

如果编译时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改。

只有当相应的警告信息消除时,才可能将编译过程继续朝前推进。

执行情况如下:

gcc-Wall-Werrorillcode.c-oillcodecc1:

warningsbeingtreatedaserrorsillcode.c:

unusedvariablevar对Linux程序员来讲,GCC给出的警告信息是很有价值的,它们不仅可以帮助程序员写出更加健壮的程序,而且还是跟踪和调试程序的有力工具。

建议在用GCC编译源代码时始终带上-Wall选项,并把它逐渐培养成为一种习惯,这对找出常见的隐式编程错误很有帮助。

项目问题三C程序的调试运行,我们编写的程序经过编译之后可以使用如下方法进行运行:

./生成的程序名(其中“./”表示当前的工作目录)将生成的程序目录加入到系统搜索路径的PATH变量(我们将在Shell编程课程中进行介绍)如果编译过程出现错误,需要进行程序的调试,这时我们需要使用的工具是gdb,程序调试工具gdb,对于Linux程序员来讲,GDB(GNUDebugger)通过与GCC的配合使用,为基于Linux的软件开发提供了一个完善的调试环境。

默认情况下,GCC在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文件的大小。

如果需要在编译时生成调试符号信息,可以使用GCC的-g或者-ggdb选项。

使用任何一个调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程序在执行时的开销,因此调试选项通常仅在软件的开发和调试阶段使用。

程序调试工具gdb,我们使用如下代码说明gdb的使用:

#includeintmain(void)intinput=0;

printf(Inputaninteger:

);

scanf(%d,input);

printf(Theintegeryouinputis%dn,input);

编译并运行上述代码,会产生一个严重的段错误(Segmentationfault)如下:

gcc-gcrash.c-ocrash./crashInputaninteger:

10Segmentationfault,程序调试工具gdb,为了更快速地发现错误所在,可以使用gdb进行跟踪调试,方法如下:

首先,在对源代码进行编译时加入“-g”选项,程序调试工具gdb,使用gdb进行程序的调试我们可以通过使用命令“gdbcrash”打开要调试的程序也可以先使用“gdb”命令打开gdb环境,然后通过输入“file文件名”的方式打开需要调试的程序,程序调试工具gdb,使用“run”命令运行程序查看程序中的错误,使用“backtrace”命令查看具体的错误信息,程序调试工具gdb,使用“frame编号”命令查看可能的程序错误(编号是在backtrace命令的执行结果中),可以看到我们程序的出错在于第8行的scanf语句。

使用quit语句退出gdb调试环境,对源程序进行修改,然后编译运行就可以了。

本课项目总结,通过前面的学习,我们已经可以完成本课程的项

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1