《Linux实用教程》书籍配套资源(PPT讲稿)第9章 Linux编程基础

第9章 Linux程序设计基础 本章学习目标 通过对本章的学习,读者应该掌握以 下主要内容 0 Linux编程风格 0 Linux下IDE的使用 0 Linux下使用 GNU cC开发应用程序 o Linux程序的调试 o Linux下使用RCS/CVS来管理源程序 o Linux下软件打包
第9章 Linux程序设计基础 本章学习目标 通过对本章的学习,读者应该掌握以 下主要内容: Ø Linux编程风格 Ø Linux下IDE的使用 Ø Linux下使用GNU cc开发应用程序 Ø Linux程序的调试 Ø Linux下使用RCS/CVS来管理源程序 Ø Linux下软件打包

91概述 9.1.1 Linux编程 Linux软件开发一直在 Internet环境下讲行。这个环境 是全球性的,编程人员来自世界各地。只要能够访问Web 站点,就可以启动一个以 Linux为基础的软件项目。 Linux开发工作经常是在 Linux用户决定共同完成一个项 目时开始的。当开发工作完成后,该软件就被放到 Internet站点上,任何用户都可以访问和下载它。由于 这个活跃的开发环境,新的以 Linux为基础的软件功能日 益强大,而且呈现爆炸式的增长态势。 大多数 Linux软件是经过自由软件基金会(Free Software foundation)提供的GNU(GNU即GNU'snot UNIX)公开认证授权的,因而通常被称作GNU软件。GNU 软件免费提供给用户使用,并被证明是非常可靠和高效 的。许多流行的 Linux实用程序如C编译器、 shelli和编辑 器都是GNU软件应用程序
9.1 概述 9.1.1 Linux编程 Linux软件开发一直在Internet环境下讲行。这个环境 是全球性的,编程人员来自世界各地。只要能够访问Web 站点,就可以启动一个以Linux为基础的软件项目。 Linux开发工作经常是在Linux用户决定共同完成一个项 目时开始的。当开发工作完成 后,该软件就被放 到 Internet站点上,任何用户都可以访问和下载它。由于 这个活跃的开发环境,新的以Linux为基础的软件功能日 益强大,而且呈现爆炸式的增长态势。 大多数Linux软件是经过自由软件基金会(Free Software Foundation)提供的GNU(GNU 即 GNU’s not UNIX)公开认证授权的,因而通常被称作GNU软件。GNU 软件免费提供给用户使用,并被证明是非常可靠和高效 的。许多流行的Linux实用程序如C编译器、shell和编辑 器都是GNU软件应用程序

Linux程序需要首先转化为低级机器语言即所谓的二进 制代码以后,才能被操作系统执行。例如编程时,先用普 通的编程语言生成一系列指令,这些指令可被翻译为适 的可执行应用程序的二进制代码。这个翻译过程可由解释 器一步步来完成,或者也可以立即由编译器明确地完成。 she编程语言如BASH、TCSH、GAWK、Pe、Tcl和πk都利用 自己的解释器。用这些语言编制的程序尽管是应用程序文 件,但可以直接运行。编译器则不同,它将生成一个独 的二进制代码文件然后才可以运行
Linux程序需要首先转化为低级机器语言即所谓的二进 制代码以后,才能被操作系统执行。例如编程时,先用普 通的编程语言生成一系列指令,这些指令可被翻译为适当 的可执行应用程序的二进制代码。这个翻译过程可由解释 器一步步来完成,或者也可以立即由编译器明确地完成。 shell编程语言如BASH、TCSH、GAWK、Perl、Tcl和Tk都利用 自己的解释器。用这些语言编制的程序尽管是应用程序文 件,但可以直接运行。编译器则不同,它将生成一个独立 的二进制代码文件然后才可以运行

9.12 Linux编程风格 1.GNU风格 (1)函数返回类型说明和函数名分两行放置,函数起始字符和函数 开头左花括号放到最左边 2)尽量不要让两个不同优先级的操作符出现在相同的对齐方式中, 应该附加额外的括号使得代码缩进可以表示出嵌套 (3)按照如下方式排版do- while语句: (4)每个程序都应该以一段简短的说明其功能的注释开头 (5)请为每个函数书写注释,说明函数是做什么的,需要哪些入口 参数,参数可能值的含义和用途。如果用了非常见的、非标准的东西, 或者可能导致函数不能工作的任何可能的值,应该进行特殊说明。如 果存在重要的返回值,也需要说明。 6)不要声明多个变量时跨行,每一行都以一个新的声明开头。 (7)当一个中嵌套了另一个ese时,应用花括号把iese括起来 (8)要在同一个声明中同时说明结构标识和变量或者结构标识和类 型定义( typedef)。先定义变量,再使用
9.1.2 Linux编程风格 (1)函数返回类型说明和函数名分两行放置,函数起始字符和函数 开头左花括号放到最左边。 (2)尽量不要让两个不同优先级的操作符出现在相同的对齐方式中, 应该附加额外的括号使得代码缩进可以表示出嵌套。 (3)按照如下方式排版do-while语句: (4)每个程序都应该以一段简短的说明其功能的注释开头。 (5)请为每个函数书写注释,说明函数是做什么的,需要哪些入口 参数,参数可能值的含义和用途。如果用了非常见的、非标准的东西, 或者可能导致函数不能工作的任何可能的值,应该进行特殊说明。如 果存在重要的返回值,也需要说明。 (6)不要声明多个变量时跨行,每一行都以一个新的声明开头。 (7)当一个if中嵌套了另一个if-else时,应用花括号把if-else括起来。 (8)要在同一个声明中同时说明结构标识和变量或者结构标识和类 型定义(typedef)。先定义变量,再使用。 1.GNU风格

(9)尽量避免在if的条件中进行赋值 (10)请在名字中使用下划线以分割单词,尽量使用小写;把大写字 母留给宏和枚举常量,以及根据统一惯例使用的前缀。例如,应该使 用类似 ignore space change flag的名字;不要使用类似 i CantReadThis的名字。 11)用于表明一个命令行选项是否给出的变量应该在选项含义的说 明之后,而不是选项字符之后被命名。 2. Linux内核编程风格 (1)Linx内核缩进风格是8个字符 (2) Linux内核风格采用K&R标准,将开始的大括号放在一行的最后, 而将结束的大括号放在一行的第一位 (3)命名尽量简洁。不应该使用诸如 Thisvariablelsatemporary Counter之类的名字。应该命名为tmp,这 样容易书写,也不难理解。但是命名全局变量,就应该用描述性命名 方式,例如应该命名“ count active users0”,而不是“ catus0”。 本地变量应该避免过长
(9)尽量避免在if的条件中进行赋值。 (10)请在名字中使用下划线以分割单词,尽量使用小写;把大写字 母留给宏和枚举常量,以及根据统一惯例使用的前缀。例如,应该使 用类似ignore_space_change_flag的名字;不要使用类似 iCantReadThis的名字。 (11)用于表明一个命令行选项是否给出的变量应该在选项含义的说 明之后,而不是选项字符之后被命名。 2.Linux 内核编程风格 (1)Linux内核缩进风格是8个字符。 (2)Linux内核风格采用K&R标准,将开始的大括号放在一行的最后, 而将结束的大括号放在一行的第一位。 (3)命名尽量简洁。不应该使用诸如 ThisVariableIsATemporaryCounter之类的名字。应该命名为tmp,这 样容易书写,也不难理解。但是命名全局变量,就应该用描述性命名 方式,例如应该命名“count_active_users()”,而不是“cntusr()”。 本地变量应该避免过长

(4)函数最好短小精悍,一般来说不要让函数的参数多于10个 否则应该尝试分解这个过于复杂的函数 (5)通常情况,注释说明代码的功能,而不是其实现原理。避免把 注释插到函数体内,而写到函数前面,说明其功能,如果这个函数的 确很复杂,其中需要有部分注释,可以写些简短的注释来说明那些重 要的部分,但是不能过多。 92|DE使用 921VM编辑器 1.ⅥM的简介 Ⅵ是 Linux世界里最常用的全屏编辑器,所有的 Linux机器都提供该编 辑器,而 Linux里提供的是Ⅵ的加强版—VM,但同Ⅵ是完全兼容。Ⅵ的 原意是“ visual interface,即可视编辑器,用户键入的内容会立即被显示 出来、而且其强大的编辑功能可以同任何一种最新的编辑器相媲美。它 在inuX上的地位就仿佛Ed程序在DOS上一样。它可以执行输出、删除、 查找、替换、块操作等众多文本操作,而且用户可以根据需要对其进行 定制,这是其他编辑程序所没有的。Ⅵ不是一个排版程序,不象Wo或 WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文 本编辑程序
(4)函数最好短小精悍,一般来说不要让函数的参数多于10个, 否则应该尝试分解这个过于复杂的函数。 (5)通常情况,注释说明代码的功能,而不是其实现原理。避免把 注释插到函数体内,而写到函数前面,说明其功能,如果这个函数的 确很复杂,其中需要有部分注释,可以写些简短的注释来说明那些重 要的部分,但是不能过多。 9.2 IDE使用 9.2.1 VIM编辑器 1.VIM的简介 VI是Linux世界里最常用的全屏编辑器,所有的Linux机器都提供该编 辑器,而Linux里提供的是VI的加强版——VIM,但同VI是完全兼容。VI的 原意是“visual interface”,即可视编辑器,用户键入的内容会立即被显示 出来、而且其强大的编辑功能可以同任何一种最新的编辑器相媲美。它 在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、 查找、替换、块操作等众多文本操作,而且用户可以根据需要对其进行 定制,这是其他编辑程序所没有的。VI不是一个排版程序,不象Word或 WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文 本编辑程序

2.VIM的基本观念 VM有三种操作方式,分别是: 命令方式 插入方式 令行方式 3.VM的进入与离开 在系统提示符“$3下键入命令VIM,后面跟上想要编辑(或者建立 的文件名,VIM可以自动载入所要编辑的文件或是开启一个新文件 VIM的退出,可以在命令行方式下使用命令“:w或者“:q!”, 前者的功能是写文件并从VIM中退出,后者的功能是从VIM中退出,但不 保存所作的修改(注意冒号)
2.VIM 的基本观念 VIM有三种操作方式,分别是: •命令方式 •插入方式 •命令行方式 3.VIM的进入与离开 在系统提示符“$”下键入命令VIM,后面跟上想要编辑(或者建立) 的文件名,VIM 可以自动载入所要编辑的文件或是开启一个新文件。 VIM的退出,可以在命令行方式下使用命令“:wq”或者“:q!” , 前者的功能是写文件并从VIM中退出,后者的功能是从VIM中退出,但不 保存所作的修改(注意冒号)

4.VIM的命令方式 (1)光标移动 要对正文内容进行修改,必须先把光标移动到要修改的内容所 在的位置,用户除了通过按键盘的 左、右箭头键来移动光 标,还可以利用ⅥM提供的众多字符组合键,在正文中移动光标, 迅速达到指定的行或列,实现定位,常用的快捷键有:表91 (2)替换和删除 将光标定位于文档中指定位置后,可以用其他字符替换光标所 指向的字符,或从当前光标位置删除一个或多个字符,常用命令有: 表9-2 (3)粘贴和复制 在VIM编辑器中,与 Windows系统不同的是从正文中删除的内容 如字符、字段或行)并没有真正丢失,而是被剪贴并复制到 个内存缓冲区中,用户可将其粘贴到正文中的任意位置,完成这 操作的命令是:表9-3
4.VIM的命令方式 (1)光标移动 要对正文内容进行修改,必须先把光标移动到要修改的内容所 在的位置,用户除了通过按键盘的上、下、左、右箭头键来移动光 标,还可以利用VIM提供的众多字符组合键,在正文中移动光标, 迅速达到指定的行或列,实现定位,常用的快捷键有:表9-1 (2)替换和删除 将光标定位于文档中指定位置后,可以用其他字符替换光标所 指向的字符,或从当前光标位置删除一个或多个字符,常用命令有: 表9-2 (3)粘贴和复制 在VIM编辑器中,与Windows系统不同的是从正文中删除的内容 (如字符、字段或行)并没有真正丢失,而是被剪贴并复制到了一 个内存缓冲区中,用户可将其粘贴到正文中的任意位置,完成这一 操作的命令是:表9-3

(4)查找字符串 为了方便文档的编辑,ⅥIM提供了强大的字符串査找功能,要査 找文件中指定字符或字段出现的位置,可以用该功能直接进行搜索 搜索方法是:在命令行键入字符“/,后面加上要搜索的字符串 然后按回车键,编辑程序将执行正向搜索(从光标所在的位置向文 件末尾方向),并在找到指定字符串后,将光标停在该字符串的开 头;键入n命令可以继续执行搜索,找出这一字符串下次出现的位置, 用字符“?取代“/",可以实现反向搜索(从光标所在的位置向文 件开头方向),举例说明如下:表9-5 (5)撤销和重复 在编辑文档的过程中,可以取消错误的编辑命令造成的后果, 另外,如果用户希望在新的光标位置再次执行先前的编辑命令,可 用重复命令。表9-6
(4)查找字符串 为了方便文档的编辑,VIM提供了强大的字符串查找功能,要查 找文件中指定字符或字段出现的位置,可以用该功能直接进行搜索, 搜索方法是:在命令行键入字符“/”,后面加上要搜索的字符串, 然后按回车键,编辑程序将执行正向搜索(从光标所在的位置向文 件末尾方向),并在找到指定字符串后,将光标停在该字符串的开 头;键入n命令可以继续执行搜索,找出这一字符串下次出现的位置, 用字符“?”取代“/”,可以实现反向搜索(从光标所在的位置向文 件开头方向),举例说明如下:表9-5 (5)撤销和重复 在编辑文档的过程中,可以取消错误的编辑命令造成的后果, 另外,如果用户希望在新的光标位置再次执行先前的编辑命令,可 用重复命令。表9-6

5.VIM的插入方式 1)进入插入方式 在命令方式下正确定位光标之后,可用一下命令切换到插入方 式:表9-7 如果用户想利用已有的文件内容,可以使用命令“: filename”,则VM将指定文件的内容输入当前光标的下一行,且 VIM仍处于命令方式。 (2)退出插入方式 退出插入方式的方法是,按ESC键或组合键Ctrl+I (3)正文替换 除了几种简单的切换到插入方式的方法外,还有一些命令允许 用户在插入模式之前首先删去一段文字,从而实现正文的替换,这 些命令包括:表9-8 6.ⅥIM的命令方式 (1)行号与文件 编辑中文档的每一行正文都有隐藏的行号,用下列命令可以移 动光标到指定行:表9-9
5.VIM的插入方式 (1)进入插入方式 在命令方式下正确定位光标之后,可用一下命令切换到插入方 式:表9-7 如果用户想利用已有的文件内容,可以使用命令“ :i filename”,则VIM将指定文件的内容输入当前光标的下一行,且 VIM仍处于命令方式。 (2)退出插入方式 退出插入方式的方法是,按ESC键或组合键Ctrl+I (3)正文替换 除了几种简单的切换到插入方式的方法外,还有一些命令允许 用户在插入模式之前首先删去一段文字,从而实现正文的替换,这 些命令包括:表9-8 6.VIM的命令方式 (1)行号与文件 编辑中文档的每一行正文都有隐藏的行号,用下列命令可以移 动光标到指定行:表9-9
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Linux实用教程》书籍配套资源(PPT讲稿)第8章 Linux网络安全.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第7章 Web应用服务.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第6章 Internet应用服务器的配置.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第5章 Intranet服务器.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第4章 Linux网络基础.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第3章 Linux系统管理.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第11章 数据库恢复技术与SQL Server的数据恢复机制.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第10章 数据库并发控制及SQL Server的并发控制机制.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第9章 数据库的安全性及SQL Server安全管理.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第7章 SQL Server2000 Transact-SQL 编程和应用.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第8章 数据库完整性及SQL Server的完整性控制.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第6章 SQL Server 2000 的数据查询.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第5章 SQL Server2000基本操作与应用.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第4章 SQL Server 2000基本知识.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第3章 关系数据库标准语言SQL.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第2章 关系数据库.ppt
- 《SQL Server 数据库技术》课程PPT教学课件:第1章 数据库技术基础知识.ppt
- 《计算机系统安全》课程PPT教学课件:第十三章 TLS(SSL)协议.ppt
- 《计算机系统安全》课程PPT教学课件:第十二章 IP安全.ppt
- 《计算机系统安全》课程PPT教学课件:第十一章 入侵检测系统.ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第1章 Linux概况及安装(刘兵、吴煜煌).ppt
- 《Linux实用教程》书籍配套资源(PPT讲稿)第2章 Linux的常用命令.ppt
- 计算机应用与维护专业(单招)教学大纲(基础课程、技术课程、选修课).doc
- 《管理信息系统》课程教学资源:PPT课件讲稿(共三章,附案例).ppt
- 中国计量大学(中国计量学院):《现场总线技术》课程教学资源(PPT课件)第一课 计算机网络(概述).ppt
- 中国计量大学(中国计量学院):《现场总线技术》课程教学资源(PPT课件)第二课 现场总线简介.ppt
- 中国计量大学(中国计量学院):《现场总线技术》课程教学资源(PPT课件)第三课 主要现场总线与现场总线控制系统.ppt
- 中国计量大学(中国计量学院):《现场总线技术》课程教学资源(PPT课件)第四课 现场总线的发展趋势.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第6章 网络操作系统与网络结构.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第5章 结构化布线系统.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第3章 计算机网络体系结构.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第7章 网络的计算模式.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第10章 计算机网络安全.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第4章 计算机局域网络.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第8章 网络的互连.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第2章 数据通信技术的基础知识.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第9章 Internet及其相关内容.ppt
- 高职高专规划教材:《计算机网络基础》课程教学资源(PPT课件)第1章 计算机网络概论(杜煜).ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源_Part I Parallel Computer System Architectures.pdf
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源_Part III Parallel Programming Models.pdf