Linux C编程基础.ppt
《Linux C编程基础.ppt》由会员分享,可在线阅读,更多相关《Linux C编程基础.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux C编程基础1Ountline1.1.编辑器(编辑器(ViVi)的基本操作)的基本操作2.GCC2.GCC的使用的使用3.Gdb3.Gdb的使用的使用4.Makefile4.Makefile介绍介绍5.5.使用使用GNU GNU AutotoolsAutotools来生成来生成MakefileMakefile文件、文件、congfigurecongfigure文件文件21 Vi编辑器编辑器1.1 Vi Vi是是Linux系统上的第一个全屏幕交互系统上的第一个全屏幕交互式编辑程序。我们目前一般使用的是式编辑程序。我们目前一般使用的是Vim(Vi Improved)。)。31 Vi编辑器
2、编辑器(cont.)一、一、Vi工作模式工作模式 Vi有有3种工作模式,分别为种工作模式,分别为命令行命令行模式、模式、插入插入模式及模式及底行底行模式模式(1)命令行模式)命令行模式用户在用用户在用Vi编辑文件时,最初进入的模编辑文件时,最初进入的模式为命令行模式。在该模式中,可以通式为命令行模式。在该模式中,可以通过上下移动光标进行过上下移动光标进行“删除删除”、“复制复制”、“粘贴粘贴”等操作,但无法编辑文字。等操作,但无法编辑文字。41 Vi编辑器编辑器(cont.)(2)插入模式)插入模式 在命令行模式下,按在命令行模式下,按“I”或者或者“Insert”键都可以进入插入模式。在该模
3、式下,用键都可以进入插入模式。在该模式下,用户可以进行文字的编辑输入。按户可以进行文字的编辑输入。按“Esc”键键可从插入模式切换到命令行模式。可从插入模式切换到命令行模式。(3)底行模式)底行模式 在底行模式下,光标位于屏幕的底行。此在底行模式下,光标位于屏幕的底行。此时用户可以进行文件保存或退出操作,也时用户可以进行文件保存或退出操作,也可以设置编辑环境,如查找字符串、列出可以设置编辑环境,如查找字符串、列出行号等。行号等。51 Vi编辑器编辑器(cont.)二、二、vi的基本操作的基本操作 1)进入进入vi 在系统提示符号输入在系统提示符号输入vi及文件名称后,就进入及文件名称后,就进入
4、vi全屏幕编辑画面:全屏幕编辑画面:$vi myfile 不过有一点要特别注意,就是您进入不过有一点要特别注意,就是您进入vi之后,之后,是处于命令行模式(是处于命令行模式(command mode),您),您要切换到插入模式(要切换到插入模式(Insert mode)才能够)才能够输入文字。初次使用输入文字。初次使用vi的人都会想先用上下左右的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入半死,所以进入vi后,先不要乱动,转换到插后,先不要乱动,转换到插入模式(入模式(Insert mode)再说吧!)再说吧!61 Vi
5、编辑器编辑器(cont.)2)切换至插入模式(切换至插入模式(Insert mode)编辑文件)编辑文件 在命令行模式(在命令行模式(command mode)下按一)下按一下字母下字母i就可以进入插入模式(就可以进入插入模式(Insert mode),这时候你就可以开始输入文字了。),这时候你就可以开始输入文字了。3)Insert 的切换的切换 您目前处于插入模式(您目前处于插入模式(Insert mode),),您就只能一直输入文字,如果您发现输错了字!您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一想用光标键往回移动,将该字删除,就要先按一下下ESC键
6、转到命令行模式(键转到命令行模式(command mode)再删除文字。)再删除文字。71 Vi编辑器编辑器(cont.)4)退出退出vi及保存文件及保存文件 在命令行模式(在命令行模式(command mode)下,按一下:冒号键进入下,按一下:冒号键进入Last line mode,例如:,例如::w filename(输入(输入 w filename将将文章以指定的文件名文章以指定的文件名filename保存)保存):wq(输入输入wq,存盘并退出,存盘并退出vi):q!(输入输入q!,不存盘强制退出不存盘强制退出vi)81 Vi编辑器编辑器(cont.)三、三、Vi各模式的功能键各模式
7、的功能键(1)命令行模式常用的功能键)命令行模式常用的功能键1)切换到插入模式)切换到插入模式 按按i切换进入插入模式切换进入插入模式insert mode,按按i进入插入模式后是从光标当前位置开始输入进入插入模式后是从光标当前位置开始输入文件;文件;按按a进入插入模式后,是从目前光标所在位置进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;的下一个位置开始输入文字;按按o进入插入模式后,是插入新的一行,从行进入插入模式后,是插入新的一行,从行首开始输入文字。首开始输入文字。2)从插入模式切换为命令行模式)从插入模式切换为命令行模式 按按ESC键。键。91 Vi编辑器编辑器(con
8、t.)3)移动光标)移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母是用小写英文字母h、j、k、l,分别,分别控制光标左、下、上、右移一格。控制光标左、下、上、右移一格。按按ctrl+b:屏幕往:屏幕往后后移动一页。移动一页。按按ctrl+f:屏幕往:屏幕往前前移动一页。移动一页。按按ctrl+u:屏幕往:屏幕往后后移动半页。移动半页。按按ctrl+d:屏幕往:屏幕往前前移动半页。移动半页。按数字按数字0:移到文章的开头。:移到文章的开头。按按G:移动到文章的最后。:移动到文章的最后。按按$:移动到光标所在行的:移动
9、到光标所在行的行尾行尾。按按:移动到光标所在行的:移动到光标所在行的行首行首 按按w:光标跳到下个字的开头:光标跳到下个字的开头 按按e:光标跳到下个字的字尾:光标跳到下个字的字尾 按按b:光标回到上个字的开头:光标回到上个字的开头 按按#l:光标移到该行的第:光标移到该行的第#个位置,如:个位置,如:5l,56l。101 Vi编辑器编辑器(cont.)4)删除文字)删除文字 x:每按一次,删除光标所在位置的:每按一次,删除光标所在位置的后面后面一个字符。一个字符。#x:例如,:例如,6x表示删除光标所在位置表示删除光标所在位置的的后面后面6个字符。个字符。X:大写的:大写的X,每按一次,删除
10、光标所在位,每按一次,删除光标所在位置的置的前面前面一个字符。一个字符。#X:例如,:例如,20X表示删除光标所在位表示删除光标所在位置的置的前面前面20个字符。个字符。dd:删除光标所在行。:删除光标所在行。#dd:从光标所在行开始删除:从光标所在行开始删除#行行 111 Vi编辑器编辑器(cont.)5)复制)复制 yw:将光标所在之处到字尾的字符:将光标所在之处到字尾的字符复制到缓冲区中。复制到缓冲区中。#yw:复制:复制#个字到缓冲区个字到缓冲区 yy:复制光标所在行到缓冲区。:复制光标所在行到缓冲区。#yy:例如,:例如,6yy表示拷贝从光表示拷贝从光标所在的该行标所在的该行往下数往
11、下数6行文字。行文字。p:将缓冲区内的字符贴到光标所在:将缓冲区内的字符贴到光标所在位置。注意:所有与位置。注意:所有与y有关的复制命令都有关的复制命令都必须与必须与p配合才能完成复制与粘贴功能。配合才能完成复制与粘贴功能。121 Vi编辑器编辑器(cont.)6)替换)替换 r:替换光标所在处的字符。:替换光标所在处的字符。R:替换光标所到之处的字符,:替换光标所到之处的字符,直到按下直到按下ESC键为止。键为止。7)回复上一次操作)回复上一次操作 u:如果您误执行一个命令,可:如果您误执行一个命令,可以马上按下以马上按下u,回到上一个操作。按,回到上一个操作。按多次多次u可以执行多次回复。
12、可以执行多次回复。131 Vi编辑器编辑器(cont.)8)更改)更改 cw:更改光标所在处的字到字尾处:更改光标所在处的字到字尾处 c#w:例如,:例如,c3w表示更改表示更改3个个字字 9)跳至指定的行)跳至指定的行 ctrl+g列出光标所在行的行号。列出光标所在行的行号。#G:例如,:例如,15G,表示移动光标,表示移动光标至文章的第至文章的第15行行首。行行首。141 Vi编辑器编辑器(cont.)(2)底行模式下常用的命令)底行模式下常用的命令 在使用在使用last line mode之前,请记住之前,请记住先按先按ESC键确定您已经处于键确定您已经处于command mode下后,
13、再按:冒下后,再按:冒号即可进入号即可进入last line mode。151 Vi编辑器编辑器(cont.)1)列出行号列出行号 set nu:输入:输入set nu后,会在后,会在文件中的每一行前面列出行号。文件中的每一行前面列出行号。2)跳到文件中的某一行跳到文件中的某一行#:#号表示一个数字,在冒号号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到后输入一个数字,再按回车键就会跳到该行了,如输入数字该行了,如输入数字15,再回车,就会,再回车,就会跳到文章的第跳到文章的第15行。行。161 Vi编辑器编辑器(cont.)3)查找字符查找字符/关键字:先按关键字:先按/键,再输入您
14、键,再输入您想寻找的字符,如果第一次找的关键字想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按不是您想要的,可以一直按n会往后会往后寻找到您要的关键字为止。寻找到您要的关键字为止。?关键字:先按关键字:先按?键,再输入您键,再输入您想寻找的字符,如果第一次找的关键字想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按不是您想要的,可以一直按n会往前会往前寻找到您要的关键字为止。寻找到您要的关键字为止。171 Vi编辑器编辑器(cont.)4)保存文件保存文件 w:在冒号输入字母:在冒号输入字母w就可以将就可以将文件保存起来。文件保存起来。5)离开离开vi q:按:按q就是退出,
15、如果无法离就是退出,如果无法离开开vi,可以在,可以在q后跟一个后跟一个!强制强制离开离开vi。wq:一般建议离开时,搭配:一般建议离开时,搭配w一起使用,这样在退出的时候还可以保一起使用,这样在退出的时候还可以保存文件。存文件。182 GCC编译器一、Whats GCC GCC stands for“GNU Compiler Collection”.GCC is an integrated distribution of compilers for several major programming languages.These languages currently include C,
16、C+,Objective-C,Objective-C+,Java,Fortran,and Ada.192 GCC编译器(cont.)The abbreviation GCC has multiple meanings in common use.The current official meaning is“GNU Compiler Collection”,which refers generically to the complete suite of tools.The name historically stood for“GNU C Compiler”,and this usage i
17、s still common when the emphasis is on compiling C programs.202 GCC编译器(cont.)二、二、GCC编译流程编译流程GCC的编译流程分为的编译流程分为4个步骤,分个步骤,分别为:别为:(1)预处理()预处理(Pre-Processing););在该阶段,编译器分析处理源代在该阶段,编译器分析处理源代码文件中的各种宏指令,如码文件中的各种宏指令,如include,if等。等。(2)编译()编译(Compiling););在该阶段,在该阶段,GCC首先要检查代码首先要检查代码的规范性、是否有语法错误等,的规范性、是否有语法错误等,
18、在检查无误后,在检查无误后,GCC把代码翻译把代码翻译为汇编语言。为汇编语言。212 GCC编译器(cont.)(3)汇编()汇编(Assembling););在该阶段,编译器把编译生成的在该阶段,编译器把编译生成的汇编代码转成二进制目标代码。汇编代码转成二进制目标代码。(4)链接()链接(Linking)。)。在该阶段,编译器把汇编阶段生在该阶段,编译器把汇编阶段生成的二进制代码、程序中用到的成的二进制代码、程序中用到的库文件链接起来,生成可执行文库文件链接起来,生成可执行文件。件。函数库分为函数库分为静态库静态库和和动态库动态库。静态库:在链接时,静态库的文件静态库:在链接时,静态库的文件
19、代码会被拷贝到可执行文件中。代码会被拷贝到可执行文件中。动态库:链接时,动态库的代码不动态库:链接时,动态库的代码不会被加入可执行文件中,而是在会被加入可执行文件中,而是在程序被执行的时候加载。程序被执行的时候加载。222 GCC编译器(cont.)三、三、GCC的常用选项的常用选项GCC的命令行格式:gcc 参数 要编译的文件 参数 目标文件 常用选项:常用选项:-c 编译为目标文件,不连接库编译为目标文件,不连接库-S 编译为汇编代码编译为汇编代码-E 预处理预处理.预处理之后的代码将送往标准预处理之后的代码将送往标准输出输出-Wwarn.设置警告设置警告,可以设置的警告开关很多可以设置的
20、警告开关很多,通常通常用用-Wall开启所有的警告开启所有的警告232 GCC编译器(cont.)-Olevel 设置优化级别设置优化级别,level可以是可以是0,1,2,3或者或者s,默认为默认为-O0,即不进行优化处理即不进行优化处理.-Dname=definition.在命令行上定义宏在命令行上定义宏,有两种方式有两种方式,-Dname或者或者-Dname=definition.在命令行上设置宏定义在命令行上设置宏定义的目的主要是为了在调试的时候设定一些的目的主要是为了在调试的时候设定一些开关开关,而在发布的时候再关闭或者打开这些而在发布的时候再关闭或者打开这些开关即可开关即可,当然宏
21、定义也用来对代码进行有当然宏定义也用来对代码进行有选择地编译选择地编译.另外也还有其他的一些作用另外也还有其他的一些作用.242 GCC编译器(cont.)-Uname 取消宏定义取消宏定义name,作用和上面的正好相作用和上面的正好相反反.-Idir.把把dir加到头文件的搜索路径中加到头文件的搜索路径中,而且而且gcc会在搜索标准头文件之前先搜索会在搜索标准头文件之前先搜索dir.-llibrary 在连接的时候搜索在连接的时候搜索library库库.库是一库是一些些archieve文件文件-其成员是目标文件其成员是目标文件.如果有如果有文件引用文件引用library,library在命令
22、行的位置应该在命令行的位置应该在那个文件之后在那个文件之后,因此因此,越底层的库越要放在后越底层的库越要放在后面面.比如如果你要连接比如如果你要连接pcap库库,那么你就需要使那么你就需要使用用-lpcap对源文件进行编译对源文件进行编译.-Ldir.把把dir加到库文件的搜索路径中加到库文件的搜索路径中,而而且且gcc会在搜索标准库文件之前先搜索会在搜索标准库文件之前先搜索dir.252 GCC编译器(cont.)-g 产生调试信息产生调试信息.GDB能够使用这些调能够使用这些调试信息。试信息。-o outfile 指定输出文件的文件名指定输出文件的文件名,默认默认为为a.out-mmach
23、ine-option.指定所用的平台指定所用的平台.262 GCC编译器(cont.)下面将以一个实例来说明如何使用gcc编译器。例1能够帮助大家迅速理解gcc的工作原理例1 hello.c-#include int main(int argc,char*argv)printf(“Hello Linux!n);272 GCC编译器(cont.)要编译这个程序,只要在命令行下执行如下命令:larryLARRY root#gcc hello.c-o hellolarryLARRY root#./hello这样,gcc 编译器会生成一个名为hello的可执行文件,然后执行./hello就可以看到程序
24、的输出结果了。在终端上显示:Hello Linux!282 GCC编译器(cont.)命令行中 gcc表示用gcc来编译源程序,-o 选项表示要求编译器输出的可执行文件名为hello,而hello.c是源程序文件。从程序员的角度看,只需简单地执行一条gcc命令就可以了;但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,gcc需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入#include语句所包含的内容;接着,gcc会调用ccl和as将处理后的源代码编译成目标代码;最后,gcc会调用链接程序ld,把生成的目标代码链接成一个可执行程序。293 GDB调试器Gdb是
25、一款是一款GNU开发组织并发布的开发组织并发布的UNIX/Linux下的程序调试工具。它使下的程序调试工具。它使你能在程序运行时观察程序的内部结构你能在程序运行时观察程序的内部结构和内存的使用情况和内存的使用情况.以下是以下是 gdb 所提供所提供的一些功能的一些功能:它使你能监视你程序中变量的值它使你能监视你程序中变量的值.它使你能设置断点以使程序在指定的代它使你能设置断点以使程序在指定的代码行上停止执行码行上停止执行.它使你能一行行的执行你的代码它使你能一行行的执行你的代码.303 GDB调试器(cont.)Gdb的使用方法:的使用方法:Gdb option executable-file
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux C编程基础 编程 基础
限制150内