




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章Linux编程基础,本章的学习目标本章的学习要求读者熟悉以下主要内容:Linux编程风格在Linux中使用IDE在Linux中使用GNUcc开发应用程序在Linux程序的调试Linux中使用RCS/CVS管理源程序Linux中的软件包,9.1概述,9 . 1 . 1 . 1 Linux编程Linux软件开发继续在internet环境中进行。这种环境是全球性的,程序员来自世界各地。只要可以访问网站,就可以启动基于Linux的软件项目。Linux开发工作通常在Linux用户决定共同完成一个项目时开始。开发工作完成后,软体会部署在所有使用者都可以存取和下载的网际网路网站上。由于此活跃的开发环境,基于Linux的新软件变得越来越强大,并且具有爆炸性增长。大多数Linux软件通常称为GNU软件,因为它经过FreeSoftwareFoundation(freesoftware foundation)提供的GNU(GNU snot UNIX)的公开认证并获得授权。GNU软件免费提供给用户,已证明非常可靠和高效。许多常用的Linux实用程序,如c编译器、shell和编辑器,都是GNU软件应用程序。Linux程序在操作系统中运行之前,必须转换为低级机器语言,即二进制代码。例如,在编程时,首先以通用编程语言生成一系列指令,这些指令可以转换为相应执行应用程序的二进制代码。这个翻译过程可以由解释器分阶段进行,也可以由编译器立即显式执行。shell编程语言(如BASH、TCSH、GAWK、shell、Tcl、Tk)均使用自己的解释器。用这些语言编写的程序可以直接运行,即使它们是应用程序文件。编译器在以其他方式工作之前生成单独的二进制代码文件。9.1.2Linux编程样式、(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的名称。请勿使用诸如ICantReadThis的名称。(11)指示是否应将选项含义说明之后的变量命名,而不是将其中一个命令行选项指定在选项文字之后。2 .Linux内核编程样式,(1)Linux内核缩进样式为8个字符。(2)使用Kreturn0的2)Linux内核样式;以下是使用Autoconf和Automake生成Makefile文件的步骤。(1)autoscan创建configure.in的模板,运行autoscan将创建configure.scan的文件。可以用作Configure.in文件的模板。(2)编辑configure.scan文件,然后运行文件名configure.in(3) aclocal和autoconf,分别生成aclocal.m4和configure文件,如下所示:(4)编辑Makefile.am文件。内容如下:(5)运行autoake-add-missing。autoake基于Makefile.am最后运行最重要的Makefile.in:(6)。/configure:现在在目录中创建了makefile文件。Make命令开始将hello.c编译为可执行文件。/hello:# makeg cc-dpackage= hello -d版本= 1.0 -I .-I-g-O2-chello . cgcc-/hello!GNU!9.4调试工具GDB,9.4.1GDB调试器简介,Linux系统包含GNU调试器GDB,是用于调试c和c程序的调试器。您可以让程序开发者在程序运行的同时观察程序的内部结构和内存使用情况。Gdb提供的一些功能包括:运行程序并设置可能影响程序执行的所有参数和环境。控制程序在指定条件下停止运行。程序停止后,可以确认程序的状态。更正程序错误,然后再次运行程序。动态监视器的变量值;通过逐步执行代码,可以观察程序的运行状态。gdb的功能非常强大,到目前为止,gdb可以帮助调试Moduls-2、Chill、Pascal和fortran程序,但是调试这些语言的源程序时仍有一些功能不可用。例如,调试FORTRAN程序时,不支持表达式的输入、输出变量或FORTRAN类的词法分析器。Gdb程序调试的对象是可执行文件,而不是程序的源代码文件。但是,并非所有可执行文件都可以调试到gdb。要使生成的可执行文件可用于调试,请运行gcc命令编译以及-g参数,以便程序在编译时包含调试信息。调试信息包括程序中每个变量的类型以及可执行文件中的地址映射和源代码的行号。Gdb利用此信息将源代码和机器代码连接起来。您可以在指令行上输入gdb,然后按enter来执行gdb。如果一切正常,gdb将启动,您可以在屏幕上看到以下内容:gnugdbredhatlinux(5.3 post-0.20021129.18 RH)版权所有2003 freesoftware foundation,Inc. gdbisfree software(gdb)启动gdb时,可以在命令行上指定许多选项。输入:获取有关help gdb的帮助信息。要查看特定命令(例如Break)的帮助信息,请在gdb提示下输入以下命令:break屏幕显示有关break的帮助信息。在返回的信息中,break是设置断点的命令。另一种获得Gdb帮助的方法是浏览gdb的手册页。在Linux shell提示符下,输入:mangdb可以查看man的手册页。9.4.2GDB命令的默认使用和应用,1 .gdb本机命令,您也可以按以下方式运行gdb:gdbfilename:其中filename是要调试的可执行文件。以此方式运行gdb允许您直接指定要调试的程序。这与启动gdb后运行filefilename命令完全相同。您也可以使用gdb检查程式异常终止所导致的核心档案,或连结到执行中的程式。Gdb支持许多命令并实现多种功能。这些命令作为复杂命令载入,用于查看从简单文件调用的堆栈内容,下面列出了使用gdb调试时使用的一些命令。1)file命令:装入要调试的可执行文件。2)cd命令:更改工作目录。3)pwd命令:返回当前工作日的历史记录。4)run命令:运行当前正在调试的程序。5)kill命令:停止正在调试的应用程序。6)list命令:列出正在调试的应用程序的源代码。7)break命令:设置断点。8)Tbreak命令;设定暂时停止点。其语法与break相同。区别在于设置为tbreak的断点运行一次后立即消失。9)watch命令:设置监视点以监视表达式的更改。10)awatch命令:设置读写监视点。读取或写入要监视的表达式时应用程序挂起。语法与watch命令相同。11)rwatch命令:设置读取监视点,当读取监视表达式时程序将停止并等待亲子调试。此命令的语法与watch相同。12)next命令:运行以下源代码,但不进入函数内部:也就是说,将一个函数调用作为一个语句执行。运行此命令的前提是已经是run,并且已经开始执行代码。13)step命令:运行以下源代码以进入函数内部:调用函数时,跳到包含函数的代码,等待执行一步。要运行此命令,必须已经以run开始执行代码。14)display命令:每次应用程序停止运行时显示表达式的值。15)infobreak命令:显示当前断点的列表,包括每个断点到达的次数。16)infofiles命令:显示有关调试文件的信息。17)infofunc命令:显示所有函数名。18)infolocal命令:显示当前函数中所有局部变量的信息。19)infoprog命令:显示调试器执行状态。20)print命令;显示表达式的值。21)delete命令:删除断点。指定断点编号将删除指定的断点。如果未指定参数,则将删除所有断点。22)shell命令:运行Linux shell命令。23)make命令:在不退出gdb的情况下重新编译生成可执行文件。24)Quit命令:退出gdb。2 .gdb应用程序实例,使用gdb调试器调试一个实例。调试的程序相当简单,但显示了gdb的典型应用程序。以下是要调试的程序代码,称为greeting.c:这个程序显示了简单的问候语,并按相反的顺序列出。9.5使用RCS/CVS管理源代码,使用9.5.1RCS,revision control system(RCS)主要用于管理文件版本,从而节省空间和时间。因此,在每个程序按特定阶段开发的同时,无需将数据复制到其他位置进行备份。RCS提供了以下几个最重要的命令:ci命令:将文件放置在RCS目录中的控制系统co命令:从RCS目录获取文件RCS命令:用于设置RCS文件参数的设置,1 .默认工作方式,通常在RCS中创建的文件放置在RCS目录中。因此,第一步需要在当前目录中创建文件。rootwyhlinux#mkdirRCS后仅使用ci指令。您可以将文件备份到RCS修改控制系统。root wye Linux要签出# citest.c .文件,请使用以下命令:root wye Linux # cotest.c签出的文件是只读的。要签出可写的作业文件,可以通过添加-l参数锁定文件。root wye Linux # co -ltest.c .也可以在将文件放入RCS控制系统时使用-l参数锁定文件。目录中的文件保持不变。root wye Linux # ci-ltest.c要将当前文件与最新版本的RCS进行比较,请使用以下命令:root wye Linux # RCSdiff test.c,2 .如果指定了版本但未指定版本号,则co将从RCS中获取最新版本。如果要在RCS中写入或读取特定版本号,可以使用-r参数选项。root wye Linux# ci-l-r 3.25 test . c-版本号3.25,root wye Linux# co-l-r 1.2 test . c-RCCroot wylinux# RCS diff-r 3.25 test.c-将版本3.25与test . c进行比较3 .关键字允许在RCS中将关键字变量放在程序代码中。这些变量通过RCS成为版本注释。用户可以将这些关键字说明视为程序中的注释。典型的关键字如下:$Author$:将版本放置在RCS的用户名中。$Data$:记录将程序代码放入RCS的日期和时间。$Header$:记录文件的标题,例如RCS路径名、版本号、日期、作者等。$ID$:与$Header$相同,但RCS路径名除外。$Locker$:记录锁定此版本的用户名。$Log$:记录锁定RCS的时间的文本语句。$RCSfiles$:记录RCS文件名。$Rivision$:指定版本号。$ source $: RCS文件名(包括路径)。$State$:使用-s选项指定的特殊状态。使用关键字的步骤如下:(1)将关键字root wylinux # vitest.c (2) RCS版本控制系统rootwyhlinux#ci-ltest.c(3)添加到程序代码中,再次弹出文件在卸载过程中,co将每个关键字设置为相应的值root wys Linux# co-ltest . croot wys Linux# cattest . c,使用9.5.2 CVS,CVS(conconcons例如,软件修改时会出现错误,在此修改后的很长时间内可能找不到此类问题。使用CVS,可以轻松查看以前的代码版本,以确定是否出现了此类问题。CVS保留每个代码版本会浪费
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 戏剧单元整合教学课件
- 屠宰场管理与运营创新创业项目商业计划书
- 报告自动撰写工具创新创业项目商业计划书
- 智慧农业大数据交易平台创新创业项目商业计划书
- 医院思想工作总结范文3篇
- 医院群众路线教育实践“回头看”工作总结
- 气体净化工国庆节后复工安全考核试卷含答案
- 高中拓展训练合同模板(3篇)
- 高压旋喷锚索施工合同(3篇)
- 2025年18-萘二甲酰亚胺项目提案报告
- 施工单位工抵房管理制度
- 地铁站消防维保施工方案及技术措施
- 2025年江苏高考真题化学试题(原卷版)
- DB32∕T 2060-2024 单位能耗限额
- 3.2一元一次方程的解法(教学设计)-北师大版数学七年级上册
- 粮食机收减损培训课件
- 既有建筑抗震加固性能化设计规程T-ZCEAS 1001-2024知识培训
- 奥曲肽治疗肠梗阻的护理
- 十五五住房和城乡建设发展思路
- 马克思主义经典原著选读-1
- 《书愤》课件-【中职专用】高二语文(高教版2023职业模块)
评论
0/150
提交评论