Linu编程必看课件(武汉英百德).ppt
《Linu编程必看课件(武汉英百德).ppt》由会员分享,可在线阅读,更多相关《Linu编程必看课件(武汉英百德).ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、linux编程基础本章学习目标本章学习目标通过对本章的学习,读者应该掌握以下主要内容:Linux编程风格 Linux下使用GNU cc开发应用程序 Linux程序的调试第第 4 章章 Linux程序设计基础程序设计基础1.概述概述1.1 Linux编程 Linux软件开发一直在Internet环境下进行。这个环境是全球性的,编程人员来自世界各地。只要能够访问Web站点,就可以启动一个以Linux为基础的软件项目。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。当开发工作完成后,该软件就被放到Internet站点上,任何用户都可以访问和下载它。由于这个活跃的开发环境,新的以
2、Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。大多数Linux软件是经过自由软件基金会(Free Software Foundation)提供的GNU(GNU 即 GNUs not UNIX)公开认证授权的,因而通常被称作GNU软件。GNU软件免费提供给用户使用,并被证明是非常可靠和高效的。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。例如编程时,先用普通的编程语言生成一系列指令,这些指令可被翻译为适当的可执行应用程序的二进制代码。这个翻译过程可由解释器一步步
3、来完成,或者也可以立即由编译器明确地完成。shell编程语言如BASH、TCSH、GAWK、Perl、Tcl和Tk都利用自己的解释器。用这些语言编制的程序尽管是应用程序文件,但可以直接运行。编译器则不同,它将生成一个独立的二进制代码文件然后才可以运行。1GNU风格(1)函数返回类型说明和函数名分两行放置,函数起始字符和函数开头左花括号放到最左边。(2)尽量不要让两个不同优先级的操作符出现在相同的对齐方式中,应该附加额外的括号使得代码缩进可以表示出嵌套。(3)按照规定方式排版do-while语句:(4)每个程序都应该以一段简短的说明其功能的注释开头。(5)请为每个函数书写注释,说明函数是做什么的
4、,需要哪些入口参数,参数可能值的含义和用途。如果用了非常见的、非标准的东西,或者可能导致函数不能工作的任何可能的值,应该进行特殊说明。如果存在重要的返回值,也需要说明。(6)不要声明多个变量时跨行,每一行都以一个新的声明开头。(7)当一个if中嵌套了另一个if-else时,应用花括号把if-else括起来。(8)要在同一个声明中同时说明结构标识和变量或者结构标识和类型定义(typedef)。先定义变量,再使用。(9)尽量避免在if的条件中进行赋值。(10)请在名字中使用下划线以分割单词,尽量使用小写;把大写字母留给宏和枚举常量,以及根据统一惯例使用的前缀。例如,应该使用类似ignore_spa
5、ce_change_flag的名字;不要使用类似iCantReadThis的名字。2Linux 内核编程风格(1)Linux内核缩进风格是8个字符。(2)Linux内核风格采用K&R标准,将开始的大括号放在一行的最后,而将结束的大括号放在一行的第一位。(3)命名尽量简洁。不应该使用诸如ThisVariableIsATemporaryCounter之类的名字。应该命名为tmp,这样容易书写,也不难理解。但是命名全局变量,就应该用描述性命名方式,例如应该命名“count_active_users()”,而不是“cntusr()”。本地变量应该避免过长。2.Vi 的使用vi提供了一些功能强大的但容易
6、记忆的命令供用户使用。类似这样的编辑任务在vi中可以轻松高效完成。Vi 有3 种模式,分别为命令行模式、插入模式及命令行模式各模式的功能,下面具体进行介绍。(1)命令行模式用户在用Vi 编辑文件时,最初进入的为一般模式。在该模式中可以通过上下移动光标进行“删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。(2)插入模式只有在该模式下,用户才能进行文字编辑输入,用户课按ESC键回到命令行模式。(3)底行模式在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。编辑命令编辑命令命命 令令功功 能能Nx(Exp
7、urgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区)Ndd(Delete)删除从光标位置开始的连续N行(并复制到编辑缓冲区)Nyy(Yank)复制从光标位置开始的连续N行到编辑缓冲区p(Put)从编辑缓冲区复制文本到当前光标位置(即粘贴)u(Undo)取消上一次操作(即恢复功能)光标命令光标命令命命 令令功功 能能h方向键,向左移动光标一个字符的位置,相当于键“”j方向键,向下移动光标到下一行的位置,相当于键“”k方向键,向上移动光标到上一行的位置,相当于键“”l方向键,向右移动光标一个字符的位置,相当于键“”:N移动光标到第N行(N待定)1G移动光标到文件的第1行G移动光标到
8、文件的最后1行:set number设置显示行号:set nonumber取消显示行号文件命令文件命令命命 令令功功 能能:q(Quit)退出没有被修改的文件(若文件被修改了而没有保存,则此命令无效):q!强制退出,且不保存修改过的部分:w(Write)保存文件,但不退出:w!强制保存文件,但不退出:x(Exit)保存文件并退出:x!强制保存文件并退出:w File另存为File给出的文件名,不退出:w!File强制另存为File给出的文件名,不退出:r File(Read)读入File指定的文件内容插入到光标位置状态命令状态命令命命 令令功 能a(Append)进入编辑状态,从当前光标之后的
9、位置开始插入键盘输入的字符i(Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符o(Open)进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置ESC进入命令状态:!Command在vi中执行外部命令Command,按回车键可以返回vi继续工作3.使用GNU cc开发应用程序 3.1 使用GNU cc gcc可以使程序员灵活地控制编译过程。编译过程一般可以分为下面四个阶段,每个阶段分别调用不同的工具进行处理,如图所示。预处理链接编译汇编源 程 序(*.c)可执行文件预处理器编译器汇编器连接器3.2 gcc的版本信息 一般来说,系统安装后就已
10、经安装和设定好了gcc。在shell的提示符下键入gcc v,屏幕上就会显示出目前正在使用的gcc的版本,同时这可以确定系统所支持的是ELF还是a.out可执行文件格式。Linux系统中可执行文件有两种格式。第一种格式是a.out格式,这种格式用于早期的Linux系统以及 Unix系统的原始格式。a.out来自于Unix C编译程序默认的可执行文件名。当使用共享库时,a.out格式就会发生问题。把a.out格式调整为共享库是一种非常复杂的操作,由于这个原因,一种新的文件格式被引入Unix系统5的第四版本和Solaris系统中。它被称为可执行和连接的格式(ELF)。这种格式很容易实现共享库。EL
11、F格式已经被Linux系统作为标准的格式采用。gcc编译程序产生的所有的二进制文件都是ELF格式的文件(即使可执行文件的默认名仍然是a.out)。较旧的a.out格式的程序仍然可以运行在支持ELF格式的系统上。3.3 gcc的使用 gcc的使用格式如下:$gcc optionsfilenames其中filenames为所要编译的程序源文件。当使用gcc时,gcc会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。后 缀 名所对应的语言-c只是编译不链接,生成目标文件“.o”
12、-S只是编译不汇编,生成汇编代码-E只进行预编译,不做其他处理-g在可执行程序中包含标准调试信息-o file把输出文件输出到file里-v打印出编译器内部编译各过程的命令行信息和编译器的版本-I dir在头文件的搜索路径列表中添加dir目录-L dir在库文件的搜索路径列表中添加dir目录-static链接静态库-llibrary连接名为library的库文件Gcc总体选项列表3.4 使用优化选项 当用gcc编译C代码时,它会试着用最少的时间完成编译并且使编译后的代码易于调试.易于调试意味着编译后的代码与源代码有同样的执行次序,编译后的代码没有经过优化。有很多选项可用于告诉gcc,在耗费更多
13、编译时间和牺牲易调试性的基础上,产生更小更快的可执行文件。这些选项中最典型的是-O和-O2选项。-O选项告诉gcc对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。-O2选项告诉gcc产生尽可能小和尽可能快的代码。-O2选项将使编译的速度比使用-O 时慢。但通常产生的代码执行速度会更快。3.5 使用调试和剖析选项 GCC 支持数种调试和剖析选项。在这些选项里最常用的是-g和-pg选项。-g选项告诉gcc产生能被GNU调试器使用的调试信息以便调试程序。gcc 提供了一个很多其他C编译器里没有的特性,在gcc里能使-g和-O(产生优化代码)连用。这一点非常有用,因为能在与最终产品尽
14、可能相近的情况下调试代码。同时使用这两个选项时必须清楚所写的某些代码已经在优化时被gcc作了改动。-pg选项告诉gcc在程序里加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况。4.使用使用GNU make编辑编辑makefile 4.1 准备工作要使用make,必须编写一个叫做Makefile的文件,这个文件描述了软件包中文件之间的关系,提供更新每个文件的命令。一般在一个软件包里,通常是可执行文件靠目标文件来更新,目标文件靠编译源文件来更新。Makefile写好之后,每次改变了某些源文件,只要执行make命令:#make 所有必要的重新编译将执行。Make程序利用make
15、file中的数据和每个文件的最后修改时间来确定那个文件需要更新,对于需要更新的文件,make程序执行makefile数据中定义的命令来更新。4.2 makefile文件的基本结构 GNU make的主要功能是读进一个文本文件makefile并根据makefile的内容执行一系列的工作。makefile的默认文件名为GNUmakefile、makefile或Makefile,当然也可以在make的命令行中指定别的文件名。如果不特别指定,make命令在执行时将按顺序查找默认的makefile文件。多数Linux程序员使用第三种文件名Makefile。因为第一个字母是大写,通常被列在一个目录的文件列
16、表的最前面。Makefile是一个文本形式的数据库文件,其中包含一些规则来告诉make处理哪些文件以及如何处理这些文件。这些规则主要是描述哪些文件(称为target目标文件,不要和编译时产生的目标文件相混淆)是从哪些别的文件(称为dependency依赖文件)中产生的,以及用什么命令(command)来执行这个过程。依靠这些信息,make会对磁盘上的文件进行检查,如果目标文件的生成或被改动时的时间(称为该文件时间戳)至少比它的一个依赖文件还旧的话,make就执行相应的命令,以更新目标文件。目标文件不一定是最后的可执行文件,可以是任何一个中间文件并可以作为其他目标文件的依赖文件。一个Makefi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linu 编程 课件 武汉 英百德
限制150内