版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 linux编程基础,1.1 vi的使用 1.2 gcc的使用 1.3 gdb简介 1.4 make简介 1.5 常用命令 ,1.1 vi的使用,进入vi 在系统提示字符(如$、#)下敲入 vi 文件名称 vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入 vi 后屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。,1.1 vi的使用,两种模式 指令模式和输入模式 在指令模式下输入的按键将做为指令来处理。 在输入模式下,vi则把输入的按键当作插入的字符来处理。 指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模
2、式切换到指令模式,则需在输入模式下键入ESC键。,1.1 vi的使用,由指令模式进入输入模式的指令 新增 (append) a :从光标所在位置后面开始添加,光标后的内容行后移动。 A : 从光标所在列最后面的地方开始添加。 插入 (insert) I : 从光标所在位置前面开始插入,光标后的内容向后移动。 I :从光标所在行的第一个非空白字符前面开始插入。 开始 (open) o :在光标所在行下新增一行并进入输入模式。 O : 在光标所在行列上方新增一行并进入输入模式。,1.1 vi的使用,退出vi 在指令模式下键入:q,:q!,:wq或:x(注意:号)。 其中:wq和:x是存盘退出,而:
3、q是直接退出。 如果文件已有变化,vi会提示保存文件而:q命令也会失效,这时可以用:w命令保存文件后再用:q退出,或用:wq或:x命令退出。 不想保存改变后的文件用:q!命令。,1.1 vi的使用,更多内容 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenam
4、e vi filename.filename :打开多个文件,依次编辑,1.1 vi的使用,插入文本类命令 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行,1.1 vi的使用,移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一
5、个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字j至字尾,1.1 vi的使用,屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrlb;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本,1.1 vi的使用,搜索及替换命令 /pattern:从光标开始处向文件尾搜索pat
6、tern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s/p2/g:将文件中所有p1均用p2替换,1.1 vi的使用,行方式命令 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 :n1,n2 d :将n1行到n2行之间的内容删除 :w :保存当前文件 :e filename:打开文件fil
7、ename进行编辑 :x:保存当前文件并退出 :q:退出vi :q!:不保存文件并退出vi :!command:执行shell命令command :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 :r!command:将命令command的输出结果放到当前行,1.1 vi的使用,选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行
8、的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write信息 nomagic:允许在搜索模式中,使用前面不带“”的特殊字符 nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始 mesg:允许vi显示其他用户用write写到自己终端上的信息,1.2 gcc的使用,gcc是GNU的C编译器 gcc处理输入文件的步骤 预处理(preprocessing) 编译(compilation) 汇编(assembly) 和连接(linking),1.2 gcc的使用,后缀名及后期操作 .c C源程序;预处理,编译,汇编 .m Obj
9、ective-C源程序;预处理,编译,汇编 .i 预处理后的C文件;编译,汇编 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 .h 预处理器文件;通常不出现在命令行上,1.2 gcc的使用,其他后缀名的文件被传递给连接器(linker).通常包括: .o 目标文件(Object file) .a 归档库文件(Archive file) 除非使用了-c, -S,或-E选项(或者编译错误阻止了完整的过程),否则连接总是最后的步骤 在连接阶段中,所有对应于源程序的.o文件, -l库文件,无法识别的文件名(包括指定的 .o目标文件和.a库文件)按命令行中的顺序传递给连接器,1.2 g
10、cc的使用,总体选项(Overall Option) -x language 明确指出后面输入文件的语言为language (而不是从文件名后缀得到的默认选择).这个选项应用于后面 所有的输入文件,直到遇着下一个-x选项. language的可选值有c, objective-c, c+, cpp-output, assembler,和assembler-with-cpp. -x none 关闭任何对语种的明确说明,因此依据文件名后缀处理后面的文件(就象是从未使用过-x选项). 如果只操作四个阶段(预处理,编译,汇编,连接)中的一部分,可以使用-x选项(或文件名后缀)告诉 gcc从哪里开始,用-
11、c, -S,或-E选项告诉gcc到 哪里结束.,1.2 gcc的使用,-c 编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件. 缺省情况下, GCC通过用.o替换源文件名后缀.c, .i, .s,等等,产生目标文件名.可以使用-o选项选择其他名字. GCC忽略-c选项后面任何无法识别的输入文件(他们不需要编译或汇编). -S 编译后即停止,不进行汇编.对于每个输入的非汇编语言文件,输出文件是汇编语言文件. 缺省情况下, GCC通过用.o替换源文件名后缀.c, .i,等等,产生 目标文件名.可以使用-o选项选择其他名字. GCC忽略任何不需要编译的输入文件.,1.2 gcc的使用
12、,-o file 指定输出文件为file.该选项不在乎GCC产生什么输出,无论是可执行文件,目标文件,汇编文件还是预处理后的C代码. 由于只能指定一个输出文件,因此编译多个输入文件时,使用-o选项没有意义,除非输出一个可执行文件. 如果没有使用-o选项,默认的输出结果是:可执行文件为a.out, source.suffix 的目标文件是source.o,汇编文件是 source.s,而预处理后的C源代码送往标准输出. -v (在标准错误)显示执行编译阶段的命令.同时显示编译器驱动程序,预处理器,编译器的版本号.,1.2 gcc的使用,调试选项(DEBUGGING OPTION) GNU CC拥
13、有许多特别选项,既可以调试用户的程序,也可以对GCC排错: -g 以操作系统的本地格式(stabs, COFF, XCOFF,或DWARF).产生调试信息. GDB能够使用这些调试信息. -ggdb 以本地格式(如果支持)输出调试信息,尽可能包括GDB扩展.,1.2 gcc的使用,-glevel -ggdblevel 请求生成调试信息,同时用level指出需要多少信息.默认的level值是2. Level 1输出最少量的信息,仅够在不打算调试的程序段内backtrace.包括函数和外部变量的描述,但是 没有局部变量和行号信息. Level 3包含更多的信息,如程序中出现的所有宏定义.当使用-g
14、3选项的时候,某些调试器支持 宏扩展.,1.2 gcc的使用,优化选项(OPTIMIZATION OPTION) 这些选项控制多种优化措施: -O -O1 优化.对于大函数,优化编译占用稍微多的时间和相当大的内存. 不使用-O选项时,编译器的目标是减少编译的开销,使编译结果能够调试.语句是独立的:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函数体内把程序计数器指到其他语句,以及从源程序中 精确地获取你期待的结果. 使用了-O选项,编译器会试图减少目标码的大小和执行时间.,1.2 gcc的使用,-O2 多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.
15、例如不进行循环展开(loop unrolling)和函数内嵌(inlining).和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果. -O3 优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项. -O0 不优化. 如果指定了多个-O选项,不管带不带数字,最后一个选项才是生效的选项.,1.2 gcc的使用,gcc一般使用格式(推荐) gcc g o执行文件名 源程序名,1.3 gdb简介,调试器gdb能让你观察一个程序在执行时的内部活动,或程序出错时发生了什么。 gdb主要做四件事(包括为了完成这些事而附加的功能),帮助找出程序中的错误
16、。 运行你的程序,设置所有的能影响程序运行的东西。 保证你的程序在指定的条件下停止。 当你程序停止时,让你检查发生了什么。 改变你的程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一 个bug.,1.3 gdb简介,得到帮助 可以使用help命令来得到gdb的在线帮助 help h 使用help或h不加任何参数来得到一个gdb命令类的列表 (gdb) help List of classes of commands: running - Running the program stack - Examining the stack breakpoints - Making prog
17、ram stop at certain points files - Specifying and examining files Command name abbreviations are allowed if unambiguous. (gdb),1.3 gdb简介,help CLASS 使用上面列出的help class作为help或h的参量,可以得到单一的命令列表 例如:显示一个status类的列表 (gdb) help status Status inquiries. List of commands: show - Generic command for showing thin
18、gs set with set info - Generic command for printing status (gdb) help COMMAND 详细列出单个命令的资料,1.3 gdb简介,设置断点 break或简单打b后面加行号或函数名 比如可以在main 函数上设断点: (gdb)break main 或(gdb)b main 单步进入 step into跟踪到函数内 命令是step或s 单步执行 next,简单的单步,不会进入函数 命令是next或n,1.3 gdb简介,显示源代码 命令是l或list 继续被中断的程序 命令是c或continue gdb下启动程序 使用run命
19、令 必须先指定程序的名字(用gdb的命令行参数)或使用file命令,来指定文件名 检查表达式的值 命令是p或print 格式是p ,1.3 gdb简介,其他常用命令 file 装入想要调试的可执行文件 kill 终止正在调试的程序 quit 终止 gdb watch 监视一个变量的值而不管它何时被改变 make 不退出 gdb 重新产生可执行文件 shell 不离开 gdb 执行 UNIX shell 命令,1.4 make简介,若一个项目足够大时,当改动一行代码,编译器需要全部重新编译来生成一个新的可执行文件。 但如果项目是分开在几个小文件里,当改动其中一个文件的时候,别的源文件的目标文件(
20、object files)已经存在,所以没有什么原因去重新编译它们。所需要做的只是重现编译被改动过的那个文件,然后重新连接所有的目标文件。,1.4 make简介,GNU Make 的主要工作是读进一个文本文件 makefile。 这个文件里主要是有关哪些文件(target目的文件)是从哪些别的文件(dependencies依靠文件)中产生的,用什么命令来进行这个产生过程。 有了这些信息,make会检查磁盘上的文件,如果目的文件的时间戳(该文件生成或被改动时的时间)比至少它的一个依靠文件旧的话,make就执行相应的命令,以便更新目的文件。,1.4 make简介,目的文件不一定是最后的可执行档,它可以是任何一个文件。 makefile 一般被叫做makefile或Makefile 。 也可以在 make 的命令行指定别的文件名。如果不特别指定,它会寻找makefile或Makefile。,1.4 make简介,简而言之make根据makefile所定义的文件(包括源程序文件、头文件、目标文件、可执行文件)间的依赖
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福州市仓山区金港湾实验学校招聘中学物理教师考试试卷真题
- GBT 30225-2026 旅游景区智慧化运营管理要求标准立项发展报告
- 第6单元 25 陈涉世家 课时1 教学课件-2026-2027学年语文九年级上册
- 疫情后教学工作计划-疫情后工作规划
- 2027届甘肃省静宁一中物理高二第一学期期末经典模拟试题含解析
- Unit4 Our Memory (Period 5)课件2026-2027学年人教版九年级上册英语
- 2027届贵州省从江县民族中学物理高二第一学期期中联考试题含解析
- 2026年锰矿开采与加工创新研究报告
- 2027届闽粤赣三省十校物理高一上期中质量检测试题含解析
- 新疆阿克苏市农一师高级中学2027届高三物理第一学期期中统考模拟试题含解析
- 2026年 高二秋季开学第一课班会教学课件:以《功夫女足》为炬奔赴高二新征程
- 2026黄石阳新工作人员公开招聘30人笔试备考题库及答案详解
- 2025年新疆检察院书记员《法律基础知识》题库附答案
- 2026年证券投资顾问胜任能力考试真题及答案解析
- 2026年苏教版小学四年级数学上册第四单元《数学建模》完整课时教案
- 无人机航拍技术课件 项目五任务二:照相机设置与参数调整
- 2026年天津专升本(计算机基础)考试真题附答案
- 海南省名校联盟2025-2026学年高二(下)期末化学试卷(含答案)
- 2026年秋季学期新版人教版小学数学五年级上册教学计划附进度表
- 消防技术服务机构质量手册范本
- CSCO胰腺癌诊疗指南(2026版)完整核心要点
评论
0/150
提交评论