您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Linux软件开发基础_第6章
2008-5-111知识回顾软件安装与设置磁盘管理相关软件安装rpmsrc.rpmIC-MSP2.0软件安装与设置软件安装网络设置与Internet访问src.rpm原码包二进制6第章IC-MSP2.0C语言开发工具本章目标熟练使用GCC编译器掌握GDB调试器使用掌握CVS工具使用IC-MSP2.0掌握CVS工具使用掌握make工具使用了解C语言其他工具使用GNUC编译器GCC(GNUCompilerCollection)由自由软件基金会(FSF,FreeSoftwareFoundation)问世于:1987年3月11日,版本编号为具有测试意义的0.9版第二天立即推出了正式的1.0版目前昀新版本为3.x版网站为()标志:IC-MSP2.0标志:cygwin程序开发过程简述在GCC中,第3、4项操作过程都已整合在GCC命令中,不需要再个别调用编译器、链接器,操作起来十分方便。从下节开始,将介绍如何从编辑一个C程序开始,完成编译、链接等操作。IC-MSP2.0成编译、链接等操作。编译与执行(1)1.首先利用vi编辑器,编辑好一个C源程序IC-MSP2.02.在hello.c的目录下,执行以下命令编译程序2008-5-112编译与执行(2)如果一切过程无误,编译完成后查看当前目录下的文件IC-MSP2.0执行gcc命令时,不加参数,默认产生名称为a.out的可执行文件编译错误示例如果编译、链接过程中发生错误,可能会出现如下的结果打开文件发现在第四行尾少了个分号IC-MSP2.0打开文件,发现在第四行尾少了一个分号以上是一个简单的调试过程范例。其实根据程序错误原因的不同,GCC编译时会产生不同的警告或错误信息C语言开发技巧(1)指定产生可执行文件的文件名IC-MSP2.0C语言开发技巧(2)执行文件时不需加上路径IC-MSP2.0gcc编译参数说明IC-MSP2.0Gcc常用编译参数GCC的语法为:gcc[option[filename]]……-c:只进行编译、组译,不进行链接。源文件名.o-S:只进行编译不进行组译及链接。源文件名sIC-MSP2.0S:只进行编译不进行组译及链接。源文件名.s-E:只进行预处理,并将结果输出到标准输出。-ofile:指定编译后的输出文件名。-pipe:使用命名管道加快编译速度。-v:显示编译器详细信息。-xlanguage:指定编译语言。2008-5-113Gcc预处理参数-include库文件名:类似在程序中设置一个头文件。编译器会先处理此文件,并将此文件经过预处理后,加入源文件内。IC-MSP2.0-Idir:设置搜索头文件的目录。例如执行gcc-I/usr/meprog0101.c指令,编译器会先到/usr/me目录下去查找头文件,然后再到标准目录(/usr/include)中查找。Gcc编译警告参数-Wall:集合了许多警告参数的功能,对于程序中大部分可能发生问题的部分,提供更多的信息。IC-MSP2.0Gcc链接参数-Ldir指定包含的库路径为dir所指定的目录-l库名指定包含的库名称为系统库路径下的lib库名.so….-static使用静态编译方式hd使用共享编译方式IC-MSP2.0-shared使用共享编译方式Gcc优化参数-O或O1指定优化等级为1-O22-O33O00即不优化IC-MSP2.0-O00、即不优化Gdb简介在Linux中,昀常用的调试器为gdb程序,它可以在执行程序时,指定各种条件的中断点、查看变量值及一步一步追踪程序执行的过程。IC-MSP2.0步步追踪程序执行的过程。使用gdb前的注意事项如果要让产生的可执行文件可以用来调试,需在执行gcc指令编译程序时,加上-g参数,指定在编译产生的可执行文件中,加上额外的调试信息,这样才可用gdb来调试该可执行文件。利用-g参数编译产生的可执行文件,虽然可用来调试,但缺点是产生的文件较大。以prog1601.c程序为例,编译时是否加上IC-MSP2.0是产的文件较大以pg程序为例编译时是否加-g参数,其文件大小将有以下的差异2008-5-114Gdb调试例程接下来的内容中,将介绍gdb的各种操作命令。此程序很简单,要求用户输入一个数IC-MSP2.0要求用户输入个数字之后,计算出从1加到此数字的总和。启动GDBgdb调试文件名IC-MSP2.0退出GDB输入quit命令结束gdbIC-MSP2.0有时输入quit命令时会出现如下的信息,表示调试的程序执行到一半。此时若按y键,则表示要退出程序,否则请按n键。基本操作指令(1)列出程序代码1.list命令用来列出可执行文件的程序代码(默认为10行)2.指定列出程序的第4至9行内容IC-MSP2.0基本操作指令(2)执行程序1.输入run命令2.中断程序的运行,则按Ctrl+c键IC-MSP2.0基本操作指令(3)回到SHELL提示符1.用shell命令实现(返回gdb时使用exit命令)2.直接执行Linux命令IC-MSP2.02008-5-115基本操作指令(4)显示操作命令的在线帮助1.单个gdb命令帮助help命令名IC-MSP2.02.所有命令帮助helpall断点设置(1)以行号设置中断点break行号IC-MSP2.0断点设置(2)条件成立时中断在指定的行数或函数break行数或函数名if条件IC-MSP2.0断点设置(3)条件成立时中断在指定的行数或函数break行数或函数名if条件IC-MSP2.0断点设置(4)条件成立时立即中断⑴先设定断点在第7行,以便于可以在定义完result变量时,设定watch断点。⑵再运行程序,当执行到第7行时,程序中断。IC-MSP2.0⑶然后设定watch断点,(当result大于50时,立即中断程序运行)⑷当result大于50时,程序立即中断。并显示中断的地方是第7行。查看变量的类型及值(1)print操作命令可列出程序执行到此时的某项变量的值IC-MSP2.02008-5-116查看变量的类型及值(2)whatis操作命令杳询某项变量的类型IC-MSP2.0程序的流程控制(1)让程序直接向下执行当程序执行到一半,因为中断点而停止时,若想让程序继续向下执行,此时应输入continue操作命令IC-MSP2.0continue命令会使程序继续向下执行,除非遇到下一个中断点程序的流程控制(2)执行下一运算式(进入函数执行)利用step操作命令,一步一步地往下执行,若遇到的下一个运算式是函数调用,则会执行函数的第一个运算式IC-MSP2.0程序的流程控制(3)执行下一运算式(不进入函数执行)利用next操作命令,一步一步地往下执行,若遇到的下一个运算式是函数调用,则不会执行函数中的算式IC-MSP2.0中断点管理(1)查看中断点状态(1)infobreakpoints命令IC-MSP2.0中断点管理(2)查看中断点状态(2)当执行程序后,再执行infobreakpoints命令,还要显示此中断点已被停止过的次数IC-MSP2.02008-5-117中断点管理(3)使中断点失效disable断点号IC-MSP2.0若执行disable时不加中断点编号,则会使所有中断点都失效中断点管理(4)使中断点生效enable断点号IC-MSP2.0若执行enable时不加中断点编号,则会使所有中断点都生效中断点管理(5)使中断点暂时生效enableonce中断点号IC-MSP2.0中断点管理(6)删除中断点clear[行号|函数名]IC-MSP2.0如果输入clear操作指令时,不加任何参数,则删除当前程序所在行号的中断点CVS简介CVS是ConcurrentVersionSystem(并行版本系统)的缩写,用于版本管理.如果参与过多人协作开发的项目,肯定有这样的痛苦经历:由于多个人同时修改同一个文件,自己辛辛苦苦修改的程序被别人彻底删除了.或:如果你的软件/程序已经发布了三个版本,而这时候用户需要你修改第二个版本的东西,也许你会因为只保留了昀新版本而痛苦CVS简介还有就是你对程序做了一些修改,但是修改很少,你只想给远方的同事发一个两个版本之间的差别文件,这样可以免于邮箱不够大,网速太慢之类的问题.为了解决类似这样的问题,以及诸如生成补丁文件,历史版本修改等些黑客(褒义)在原先Ui体系里很历史版本修改等,一些黑客(褒义)在原先Unix体系里很成熟的SCCS和RCS的基础上,开发了CVS.SCCS:SourceCodeControlSystemRCS:RevisionControlSystem2008-5-118CVS简介CVS的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序.由仓库管理员统一管理这些源程序.这样,就好象只有一个人在修改文件一样.避免了冲这样,就好象只有个人在修改文件样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地.用户做的任何修改首先都是在本地进行,然后用cvs命令进行提交,由cvs仓库管理员统一修改.这样就可以做到跟踪文件变化,冲突控制等等.CVS简介由于CVS是典型的C/S结构的软件,因此它也分成服务器端和客户端两部分.不过大多数CVS软件都把它们合二为一了不过大多数CVS软件都把它们合二为了.CVS下载与安装主要内容:从CVS网站 服务器(内含客户端)CVS下载与安装安装过程前的准备:添加用户与组:#useradd-d/cvsrootcvs#chmod771/cvsroot#chmod771/cvsrootCVS下载与安装安装过程:解压cvs-VERSION.tar.gz文件,运行系统配置程序/fi./configure然后makemakeinstall即可。CVS下载与安装(服务器端)配置超级服务器(xinted)因为cvs服务器启动要使用超级服务器来控制,所以在“/etc/xinetd.d/”目录中编写如下配置文件:编写如下配置文件:文件名为cvspserver其内容如下图:2008-5-119CVS下载与安装(服务器端)CVS下载与安装(服务器端)Sock_type定义此服务的sock类型为streamWait=no支持多个客户端的并发访问User=root启动此服务的用户为rootServer=/usr/bin/cvs此务服务的启动程序名fll/server_args=-f--allow-root=/cvsrootpserver指定此服务的启动参数log_on_failure+=USERID登录用户识别only_from=172.16.0.0/24限制访问,可以根据实际情况不要或者修改CVS下载与安装(服务器端)建立CVS仓库(初始化cvs)#servicexinetdrestart#su-cvs$cvs-d/cvsrootinit$exit#CVS下载与安装(服务器端)添加可以使用CVS服务的用户到cvs组:以root身份修改/etc/group,把需要使用CVS的用户名加到cvs组里。比如我想让用户dcp能够使用CVS服务,那么修改以后的/etc/group应该有下面这样一行:后的/etc/group应该有下面这样行:cvs:x:105:dcpCVS下载与安装(服务器端)重启inetd使修改生效:servicexinetdrestart检测服务是否开启:netstat–an|grep2401CVS下载与安装(客户端)客户端设置比较简单,只要设定CVSROOT环境变量即可编辑/etc/profile文件,在其中加入如下内容:2
本文标题:Linux软件开发基础_第6章
链接地址:https://www.777doc.com/doc-6316411 .html