第20章 Linux编程.ppt_第1页
第20章 Linux编程.ppt_第2页
第20章 Linux编程.ppt_第3页
第20章 Linux编程.ppt_第4页
第20章 Linux编程.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第20章Linux编程,C是Linux中最常用的编程语言,Linux本身用C编写。c也经常使用,这是目前业界最重量级的语言。本章的目的不是教读者编写C和C程序,而是告诉C和C程序员如何在Linux平台上工作。本章主要介绍Linux上的编辑器、编译器和调试器,最后以版本控制系统Subversion结束本章。写Linux的黑客们使这些工具最适合程序员的口味。虽然第一次使用的时候可能不习惯。(圣雄甘地,程序员,程序员,程序员,程序员,程序员,程序员,程序员),20.1编辑器的选择,Vim和Emacs对Linux初学者来说是两个噩梦,但建议读者学习其中之一。(莎士比亚,北方表达式,艺术)这两种工具的功

2、能非常完美、强大,程序员可以根据需要轻松扩展。刚开始的时候,读者可能会感到厌烦,但是成为Vim或Emacs的高级用户,没有人想放弃。如果读者没有时间学习这两种工具,Linux的图形编辑器也可以提供很好的功能。总之,不必担心在Linux上如何写程序。编辑器不会让大家为难的。20.1.1 Vim、Vim是Vi的增强版本,适用于大多数其他UNIX系统。在很多非正式场合,Vim和Vi是一回事。此编辑器是所有UNIX和Linux系统的标准软件,因此对系统管理员也很重要。本节主要介绍Vim的基本用法,包括保存编辑、替换搜索和为程序员配置。最后,本节以命令表结束。有关使用更多Vim的详细信息,请参阅Vim文

3、档。1文件2编辑和保存搜索字符串3替换字符串4程序员的5Vim配置中常用的命令,20 . 1 . 1 . 1 Vim,20.1.2 Emacs,向下钻取时,MIT人工智能实验室(MIT AI Lab)是Emacs“起源”,Emacs与同期出生的Vi大不相同。这种差异来自设计理念。Emacs致力于创建“全面”编辑器,使程序员能够编写代码、编译程序、收发邮件、玩游戏等。那一年,Emacs与操作系统几乎相似。程序员打开Emacs后,在断电之前无需退出。1编辑和保存文件2移动光标3删除和粘贴4重复命令、20.1.2 emacs、20.1.3图形编程工具和Linux下的图形编辑器。这里只介绍最常见的两种

4、。Gedit在Gnome中工作,Kate是KDE环境中最受欢迎的编辑器。读者一般不会提供比上述编辑器更好的功能,并且可能需要在使用的所有Linux系统上安装这些非流编辑器,因此不建议使用其他编辑器。如果读者仍然喜欢Linux,Linux也可以提供相关工具,读者不妨尝试一些。图形工具的使用类似,此处以gedit为例。Ubuntu用户可以单击“应用程序”|“附件”|“文本编辑器”命令打开此工具,也可以直接在命令行中输入gedit来打开编辑器。作为程序编辑器,编程语言的语法姜潮功能是必不可少的。Gedit能够识别几乎所有的编程语言。单击“查看”|“姜潮模式”查看gedit支持的所有语言。20.1.3

5、图形编程工具,20.2 C和C编译器:GCC,实际上,此标题不合适。GCC在开发初期位于C编译器中,可以从这个名字推测:GNU C Compiler。但是经过10多年的发展,GCC的意义悄然改变,成为GNU Compiler Collection,同时支持C、C、Objective C、Chill、Fortran、Java等语言。本节通过几个示例说明GCC编译器的使用。GCC的功能(自由软件的旗舰项目)非常强大,无法列出每个选项,需要的读者可以参阅GNU GCC文档。,20.2.1要编译第一个C程序并编译C语言程序,可以在gcc命令后使用C源文件作为参数。以下命令编译与第20.1.1节中的su

6、mmary.c: $ gccsummary.c,20 . 2 . 2 . 2编译相关的选项。读者已经知道如何使用gcc生成可执行文件。只需要一行命令,两个(或四个)单词,但在很多情况下,程序员需要的不仅仅是可执行程序那么简单。(莎士比亚、程序员、程序员、程序员、程序员、程序员、程序员)在某些情况下,需要目标代码,程序员需要获取汇编代码gcc。20.2.3优化选项,程序员总是希望自己的作品运行得更快、更高效。这不仅取决于代码本身的质量,而且在编译器中也起着不可忽视的作用。可以将同一语句翻译成不同的程序集代码,但执行效率非常不同。有些编译器没有足够的聪明来忽略源代码中程序员的“暗示”,因此只能生成

7、效率低下的gcc。除了充分的“智能”外,Gcc还提供了许多优化选项供程序员选择。要获得特别优化的代码,最简单的方法是使用-Onum选项。Gcc提供了三个优化选项-O1、-O2和-O3。理论上,-O3选项生成运行效率最高的目标代码。但是,优化级别越高,意味着冒更大的风险。通常,-O2选项符合大多数优化要求,并且足够安全。20.2.4编译C程序:g,gcc命令可以编译C源文件,但不能自动链接到C程序使用的库。因此,通常使用G命令完成C程序编译和连接。此程序自动调用gcc执行编译。$ g -o hello hello.cpp g中的选项与gcc几乎匹配。上面的示例编译C文件hello.cpp,并将生

8、成的可执行文件命名为hello。20.3调试:GDB,GDB是GNU发布的强大程序调试工具,也是Linux程序员不可缺少的渡边杏工具。GDB与图形IDE调试器相比,在某些细节中显示出令人羡慕的灵活性。GDB具有图形调试器中没有的强大功能,这是随着使用而逐步显示的。此部分从简单实例开始,然后提供GDB中常用的命令表。有关更多详细的命令选项,请参见GDB手册。启动20.3.1 gdb。使用gdb调试C/C程序之前,必须先使用gcc -g命令生成包含调试信息的可执行程序。否则,调试时会看到一堆汇编代码。$ gcc -g summary.c然后可以调试使用gdb命令生成的二进制文件a.out。本示例使

9、用的此程序没有逻辑错误。只是借用来介绍gdb的基本命令。20.3.2帮助,随时可以使用帮助命令(gdb)帮助# #查看帮助信息显示帮助信息list of classes of commands : aliases-aliases of other commands break points,查看20.3.3源代码,list命令(缩写为4 5int main() 6 7int i,result8 9 result=0;的10 for(I=1;I=100I),设置20.3.4断点,如果程序继续运行直到退出,调试将没有意义。Break命令(缩写为b)用于设置断点。此命令使用行号或函数名作为参数。(g

10、db)中断点break point 1 at0x 4004 a 73360 file summary . c,Line 10。(gdb)在break summary# summary函数门户上设置断点break point 2 at0x 4004 FB 3360 file summary . c,line22.20.3,使用Run命令(缩写为r)作为断点运行程序.I=100I)、20.3.6监视变量、调试器的最基本手段是监视变量值。可以使用Print命令(缩写为p)请求gdb提供指定变量的值。(gdb) print sum #打印变量sum的值$ 1=6(gdb)n # # 25 for(I=

11、1;I=n;I) (gdb) #重复上一个命令(单步运行)26 sum=I;(gdb)打印合计# #打印合计值$2=10,20.3.7临时修改变量,gdb允许用户在程序运行时更改变量值。通过Set var命令完成此操作。(gdb)print I $ 4=2(gdb)set var I=1(gdb)print I,查看20.3.8堆栈状态,为每个程序调用一个函数运行时堆栈信息对于程序员来说非常重要。您可以使用Bt命令查看当前运行时堆栈的情况。(gdb)Bt # 0 summary(n=450)at summary . c :22 # 10x 00000004004 DC in main()at

12、summary Quit命令(缩写为q)(gdb)c continuing . summary 1-450=101475 program exited normally。(gdb)回答quit“y”以表示gdb;退出。调试环境(gdb)quit the program is running . exit anyway?(y or n),20.3.10命令摘要,本节仅介绍gdb命令的一小部分(考虑GDB标准文档Debugging with GDB346页的篇幅)。20.4与他人合作:版本控制系统在生活中不能避免错误,确保正确取消更改是很重要的。在大型软件开发中,如果通信不顺畅,团队成员很可能徐璐

13、进行矛盾的更改,如果源代码仅位于一个目录中,事情就会变得一团糟。幸运的是,本节中介绍的版本控制可以有效地解决这些问题。在正式开始之前,我们先看看版本控制系统到底能做什么。什么是20.4.1版本控制?简而言之,版本控制系统是一套工具,用于在开发程序时存储对源代码的所有修改。没什么特别的,好像也可以用CP命令做。实际上,每次源代码修改完成后,重命名旧版本并保存新版本,以执行版本控制的最基本功能。但是,在复杂和健壮性要求高的环境中,开发人员还具有集中管理、自动跟踪各个文件的修改历史记录等要求。快速还原到完整的日志机制指定版本,这便于确定修改的原因:徐璐协调其他开发人员之间的活动,以确保对源代码相同部

14、分的更改不会徐璐复盖。20.4.2 subversion安装,Subversion已包含在许多Linux发行版中,Ubuntu在安装源中提供Subversion下载。如果读者使用的Linux发行版不包含此软件,可以从下载。使用源代码或二进制安装软件包完全取决于实际要求。20.4.3项目仓库建设,“项目仓库”是版本控制系统的专有名词,是存储各种文件的主要场所。项目仓库使用目录作为载体,以下命令设置目录svn_ex,此部分的所有源代码最终存储在中:$ mkdir /home/lewis/svn_ex下,调用svnadmin create命令以设置项目仓库。$ svnadmirSubversion现在将某些内容放置在svn_ex目录中,Subversion需要它来记录项目中的所有内容。这是一般使用者通常不需要理解的复杂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论