当前位置:松语文学 > 其他类型 >Linux实用培训教程合并版最新章节 > Linux实用培训教程合并版TXT下载
错误举报

第 31 章

  akefile.in。具有源码结构的程序文件包可以在任

  何UNIX、LINUX的系统上使用简单的命令(即configure/make/make install等)进行配置、编译、连接和安装。可以

  执行菜单cāo作来生成源码结构:

  【Build】→【Run automake&conf】

  第四步,配置,即运行configure

  configure是一个脚本,用来确定所处系统的细节,比如使用何种编译器、何种库,以及编译器和库的保存位置

  ,并把Makefile.in的相应部分进行替换,形成Makefile。可以执行菜单cāo作来进行配置:【Build】→【Run

  configure】

  第五步,编译连接

  执行菜单cāo作【Build】→【Built Project】即可完成编译连接,形成可执行文件。默认情况下,这种可执行文件

  是带有源码调试符号的。对于多文件的程序,一般需要对每一个文件分别进行编译生成目标文件。当每个文件

  的编译通过之后,再统一进行编译连接。单独编译当前正在编辑的文件的菜单cāo作是:【Build】→【Compile

  File】

  第六步,运行

  如果想在KDevelop的控制下运行已编译连接好的程序,可以执行菜单cāo作:【Build】→【Excecute program】如

  果想单独运行程序,则需要先安装,然后在命令行中输入相应的可执行文件的名字(一般来讲,就是工程的名

  字)即可。KDevelop会把可执行文件放在/usr/local/bin之中【Build】→【Install】

  网站:http://www.fywxw.com 82/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  例1 单文件面向过程C++编程

  发布时间:2007-05-04 23:08:17

  有观点认为,非跨平台病dú在cāo作系统混合部署的环境中,其扩散速度比较低。这里要编写一个程序来模拟计

  算机病dú的扩散过程,直观地验证这个观点。这里将使用C++语言。为简单起见,仍然使用面向过程的编程方

  法,程序文件也只有一个。学习本例时,应着重理解用KDevelop编程的基本步骤。

  问题陈述

  假设有一个封闭的环境,其中有计算机N 台。这N 台计算机都可以选择安装A或B种cāo作系统。有一种非跨平台

  病dú病dú,能感染运行安装Acāo作系统的计算机。当染dú计算机与未染dú计算机jiāo换时,此病dú将以概率pA 扩

  散。同理,设有另一种非跨平台病dú病dú,能感染运行安装Bcāo作系统的计算机,扩散概率为pB 。把cāo作系统

  单一部署2条件下的病dú扩散情况与两种cāo作系统按比例r:1 混合部署时的{2即所有计算机都安装同一种cāo作系

  统}扩散情况进行比较。初始条件:设N=70, pA = pB =p=0.3, rO{0,1,2,3} ,r=0 对应单一部署,其他对应混

  合部署;单一部署时,有两台计算机已经感染了病dú;混合部署时,每种cāo作系统的计算机各有一台计算机已

  经感染了病dú。输出:用数值和图形来表示感染病dú的计算机总数和增量的变换情况。终止条件:当所有计算

  机都感染病dú时,停止模拟。

  设计

  首先,定义一个TComputer类型的数组,每个元素代表一台计算机。TComputer是用户自定义类型,其中记录计

  算机上的cāo作系统类型、以及是否感染了病dú等信息。应根据初始条件,对这个数组进行初始化。

  其次,定义一个模拟计算机jiāo互的函数ComputerContact(),用以模拟任意两台计算机的jiāo互。当这两台计算机

  的cāo作系统一样,并且其中一台已经感染了病dú时,另一台计算机将以概率p感染病dú。为了方便,可以产生

  一个0 到9 范围内的随机数,当此随机数小于p*10时,就认为病dú扩散了。

  第三,可以产生两个小于N 的互不相等的随机数,来确定一次jiāo互中的两台计算机。

  编写程序文件

  通过菜单cāo作【Project】→【New Project】启动新建工程向导程序,选择工程类型,并指定工程名称及其保存

  位置,接下来一路点击Next即可完成工程的创建工作。

  向导程序会自动生成一个含有主函数的文件。以此文件是一个模板,在它的基础上修改并添加代码,即可编写

  需要的程序。本例的源程序见linuxv-viruspread-0.0.1.tar.gz中的/src/viruspread.cpp。

  编译

  程序写好后,应该把文件保存起来,然后按照前面提到的步骤,生成源码结构、配置、编译,即依次执行如下

  菜单cāo作:

  【Build】→【Run automake&conf】

  【Build】→【Run configure】

  【Build】→【Compile File】

  每一个cāo作若能正常完成,在Messages 窗口中会出现Success的提示。如果没有Success 的提示,则表明相应的cāo

  作失败,应查明原因。一般来讲,生成源码结构和配置这两个cāo作都能顺利通过。如果编译连接是首次进行,

  则一般会失败,因为很少有人能一次写出没有任何语法错误的程序。查看Messages窗口中的提示信息,可以了

  网站:http://www.fywxw.com 83/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  解哪些地方出现了语法错误。单击某一条错误提示信息,KDevelop会自动把光标定位到发生该错误的语句上。

  依据错误提示,修正程序中的语法错误,然后再次尝试编译,直到出现Success的提示。经常出现的一种情况是

  ,程序上的一个语法错误会导致多条错误信息的出现。因此,应该把第一条错误信息认真处理好,再从随后的

  错误信息中随机选择几条加以处理,然后就再次尝试编译,看还有没有错误信息。如此反复多次,直到把所有

  的错误提示消除掉,编译就成功了。不要把所有错误信息都依次处理完再尝试编译,那样的效率比较低。

  生成可执行文件

  编译成功后,执行菜单cāo作【Build】→【Built Project】即可生成相应的生成可执行文件。本例的可执行文件

  见viruspread 。

  调试

  接下来,可以执行菜单cāo作【Build】→【Excecute program】试运行程序。这种运行是在KDevelop的控制下进行

  的。因此,如果出现“死循环”,可以执行菜单cāo作【Build】→【Stop】或按Esc 键即可中止程序的运行。如果

  在程序中存在逻辑错误,就得不到期望的结果。逻辑错误的排除比较困难。必须对程序进行仔细的分析才能找

  到错误的原因。

  一般的逻辑错误可以根据程序的运行表现加以判断。比较深层次的逻辑错误则需要借助调试工具。本章前面介

  绍的调试工具GNU gdb就是一个很好的工具,可以用它对程序进行仔细分析,查找逻辑错误的根源。默认情况

  下,经过【Build】→【Built Project】cāo作之后,可以在工程目录下的/debug/src/中找到带源代码调试符号的可执

  行文件。发现逻辑错误后,就要修改程序,重新编译连接。然后再试运行。如果仍然得不到期望的结果,说明

  程序中还有逻辑错误,应再次进行分析。如此反复多次,直到消除全部的逻辑错误。

  发布可执行文件

  如果只想发布程序的可执行文件,可以先调整项目的编译连接选项,选择优化编译的方式。这样可以得到更小

  更快的可执行文件。

  可以通过菜单【Project】→【Build Configuration】修改编译连接选项。此菜单之下有三种选项,默认为Debug,

  生成的可执行文件中含有源程序调试符号;还可以选择Default或Optimized。选择Optimized时,编译连接时将进

  行优化,生成的可执行文件更小,执行起来也更快。

  选择Debug时,可执行文件保存在工程目录下的/debug/src/中;选择Optimized时, 可执行文件保存在工程目录

  下的/optimized/src/中;选择Default时, 可执行文件保存在工程目录下的/src/中。对于本例,三种选择所生成的

  可执行文件的大小差别很大。选择Debug 时,93kb;选择Default时,42kb ;选择Optimized 时,只有8.8kb(

  见viruspread)。因此,如果要发布可执行文件,应该选择Optimized的方式进行编译连接。

  发布源程序

  把工程目录及其中的所有文件打包即可形成源程序包。linuxv-viruspread-0.0.1.tar.gz是本例的源程序包。用户得

  到这个源程序包并解压后,不必安装KDevelop 就可以按标准方法进行编译和安装,即支持configure,make

  ,make install,make clean,make uninstall等命令。这个包也含有KDevelop的工程文件和其他相关的信息。因此

  ,如果用户安装了KDevelop,可以直接打开该工程进行修改。

  网站:http://www.fywxw.com 84/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  例2 多文件面向对象的C++程序

  发布时间:2007-05-04 23:08:40

  前例程序中虽然有一些C++的成分,但程序的设计思想还是面向过程的。本例将采用面向对象的思想对其进行

  改进。对象是C++中非常重要的成分。面向对象的编程往往可以使程序设计更直观,更简捷。

  设计

  首先,定义一个CComputer对象数组,每个对象代表一台计算机。CComputer是用户自定义的类,其属xìng包括

  cāo作系统类型和所染病dú的传染概率(用0 到9 范围内的整数表示,0 代表无病dú),成员函数Contact()则用于模

  拟与其他计算机的jiāo互。当一台染dú计算机与另一台计算机未染dú计算机进行jiāo互时,病dú将扩散。为了方便

  ,可以产生一个0到9范围内的随机数,当此随机数小于染dú计算机的传染概率时,就认为病dú扩散了。其次,

  在主函数中产生两个小于N 的互不相等的随机数,来确定一次jiāo互中的两台计算机。

  编写程序文件

  创建工程的cāo作与前例相同。这里将工程命名为virus_os。除了向导程序自动生成的那个含有主函数的文

  件virus_os.cpp 外,还应该增加两个新文件,即ccomputer.h和ccomputer.cpp,前者是含有CComputer类声明的头

  文件,后者含有CComputer类的实现方法。执行菜单cāo作【File】→【New】即可增加新文件。注意在对话框中

  输入正确的文件名和文件类型,并且“Add to project”复选框应该勾选上。本例的源程序

  见linuxv-virus_os-0.0.1.tar.gz中的/src

  编译

  程序写好后,依前例进行生成源码结构、配置、编译等cāo作即可。这个工程包括三个文件。执行菜单cāo作

  【Build】→【Compile File】只是对当前的文件进行编译。这为分别排除每个文件的语法错误提供了方便。

  其他

  编译成功后,即可依前例进行“生成可执行文件、调试、发布可执行文件、发布源程序”等cāo作,就不再赘述

  了。本例的可执行文件见virus_os。

  网站:http://www.fywxw.com 85/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  例3 改进程序

  发布时间:2007-05-04 23:09:03

  如果得到了某个用KDevelop开发的软件的全套工程文件,可以很容易地对其进行升级,然后发布新的版本

  。

  下面举例说明。取得linuxv-virus_os-0.0.1.tar.gz后,解压缩形成一个目录,virus_os-0.0.1的全套工程文件就保

  存在其中。启动KDevelop,然后执行【Project】→【Open Project】,找到virus_os.kdevelop并打开它,相应的工

  程也就打开了。调试成功后,可以按前面提到的方法发布修改后的软件即可。在发布前应修改版本号。修改方

  法是,执行菜单cāo作【Project】→【Project Options】,在随后出现的工程属xìng窗口中进行修改即可。

  网站:http://www.fywxw.com 86/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  例4 使用已有的源文件

  发布时间:2007-05-04 23:09:26

  前例的程序还有改进的余地:在CComputer类的基础上创建一个病dú扩散类CViruSpread 来模拟病dú扩散。

  当需要模拟不同计算机数量、不同cāo作系统布置比例以及不同病dú扩散概率条件下的病dú扩散情况时,就可以

  通过创建相应的对象来进行了。

  新建工程virusimulator,创建CViruSpread 的文件cviruspread.h 和cviruspread.cpp。这里需要把ccomputer.h

  和ccomputer.cpp 两个文件添加到本工程中来。cāo作方法:在KDevelop 主窗口的右侧有一个Automake Manager标

  签。点击该标签,就可以看到本工程源文件所在的文件夹以及各文件。在列有文件的那个窗口上方有工具条,

  其中就是用来添加文件的。添加文件有两种方式,一种是链接(link)方式,另一种是复制(copy)方式。

  网站:http://www.fywxw.com 87/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  linux四个主要部分

  Linux Shell

  发布时间:2007-05-04 23:09:43

  Shell是系统的用户界面,提供了用户与内核进行jiāo互cāo作的一种接口。它接收用户输入的命令并把它送入

  内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell

  有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序

  松语文学免费小说阅读_www.16sy.com