第23章 Linux基本编程.doc_第1页
第23章 Linux基本编程.doc_第2页
第23章 Linux基本编程.doc_第3页
第23章 Linux基本编程.doc_第4页
第23章 Linux基本编程.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

377 第23章 Linux基本编程第23章 Linux基本编程本章的学习目标: 了解什么是GNU计划及其意义 熟悉各种GNU计划实用程序 熟悉GCC编译器的用法和执行过程 了解多文件项目 熟悉makefile的结构 熟悉gdb调试程序23.1 GNU计划的实用程序GNU(它代表GNU is not UNIX)是由Richard stallman开发的一个与UNIX兼容的软件系统。大多数Linux软件是经过自由软件基金会(Free Software Foundation)的GNU()公开认证授权的,因而通常称为GNU软件。GNU软件免费提供给用户使用,并被证明是非常可靠和高效的。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。GNU计划包括上百个命令、工具和工具的集合,以及文档。说实话,如果没有上百位的编程者用他们的时间和精力开发这些程序,Red Hat Linux不会像现在拥有这么丰富的内容。23.1.1 GNU计划软件内容GNU计划的实用程序分布在多个部分中。bin实用程序、diff实用程序以及shar(shell archive)实用程序主要用于开发工作;最常用的实用程序是文件实用程序、查找实用程序、shell实用程序以及文本实用程序。表23-1列出了GNU计划的各种实用程序。用户可以发现几乎所有的这些软件都已安装在用户的Red Hat Linux系统上。它们是在Linux系统安装时安装的,或是使用rpm命令或Glint软件维护X11客户事后更新的。表23-1 GNU计划的各种实用程序应用程序集描 述am-utils各种网络和文件系统工具,如hostname或mountas一个基本的程序开发工具 GNU的汇编器autoconf为源代码生成配置脚本的编程工具automake生成makefile的编程工具bashBourne Again shell(是对Bourne Shell的改进和扩大)bfdGNU的二进制文件描述符库binutils二进制工具,其中许多用来编程,如ar、ranlib和strip等 bisonGNU的bison命令(类似yacc解析器生成器)ccmode使emacs支持源代码编辑cl对GNU emacs Lisp的普通Lisp支持cppC的预编译器cpioGNU中的cpio存档程序cvsCVS的一部分,RCS的前端程序cvsclient对cvs协议的描述diff进行文件不同之处的比较的一些程序dired- x支持GNU emacs进行目录编辑dvipsDVI到PostCsript的转换器ed行编辑器ediff多个文件的比较和融合egcs实验性的GNU C编译器emacsGNU中的宏编辑器find文件系统查找和操作工具fontnameTeX的字体名称forms对GNU emacs的数据库形式项的支持g77GNU中的Fortran编译器(续表) 应用程序集描 述gasp编程工具 GNU的汇编预处理器GCC基本编程工具 GNU的C编译器gdb编程工具 GNU的调试器gdbint内部连到GNU调试器gdbm数据库例程的库gbk图形例程的库gettextGNU中gettext编程例程的工具git交互性工具一个多精度的数学计算例程库gnusemacs中的Usenet阅读器gpm在文本模式窗口下支持鼠标的例程库(包括gpm守护程序)gperf散列函数生成器gprof生成profile类型文件grepGNU中的规则表达式查找工具gtkGNU图形处理器(GIMP)的图形例程库gzip文件压缩程序集historyGNU的历史库和文档(支持编程)indent格式化源代码的编程工具info准备和阅读GNU中info格式的文本文件的工具kpathsea目录搜索的程序库ld基本编程工具 GNU链接器libc包含了几乎所有命令要用到的库例程libtool支持共享软件库的脚本和信息Linux-faqLinux的常见问题和答案(/usr/doc/FAQ)m 4GNU中的宏处理器make用于从脚本建立程序的编程工具message在GNU emacs中支持电子邮件和新闻阅读mgetty登录监视程序(支持语音邮件、传真等)mh-e使GNU emacs支持M H电子邮件mmallocGNU中的内存映射程序(为编程者提供内存管理支持)mtools访问和操作DOS磁盘的工具pdb对GNU图像处理器的支持psacct记账工具readline软件输入工具(续表) 应用程序集描 述ref-texGNU中RefTeX的交叉引用和BibTeX工具sc在eamcs和gnus中支持电子邮件的回复screenGNU屏幕复用器sedGNU中的流编辑器sh-utilsshell工具,如date、printenv、tee和who等sharutils一系列shell存档工具,包括unencode和uudecode stabs调试工具和格式的信息standardsGNU程序的编程标准tar磁带存档命令termcapGNU终端能力库和数据库texinfoTexInfo文档的转换、准备和打印工具textutils文本工具,如cat、head、sort、tail等timeGNU中的时间工具umb-shemeUMB方案解释器uucpUNIX到UNIX的包复制程序vipGNU emacs中的vi仿真器viperGNU emacs(19.29)中的vi仿真器web2cTeX中的Web到C的转换器wget从Web中以非交互方式取得文件的网络工具zshZ shell,与Bourne Shell(sh)兼容23.2 编 程 环 境各种编程语言或shell程序脚本的源代码文件可以用任何一种文本编辑器打开和编辑。一般来说,在Linux开发程序有两个主要的编辑器,vi或者vim,还有Emacs。这些文本编辑器如何选择?可以都试试看,然后选择自己喜欢的。反正它们都可以输入文本,都可以生成源代码。在此推荐vim,简捷而好用。关于文本编辑器的内容在第26章详细介绍。23.3 GCC的介绍GCC是GNU C Compiler的缩写,是GNU/Linux下最好的编译器之一。这个编译器稳定,而且文档齐全,大部分的自由软件都是用他编译的。如果使用C,那么就可以选择GCC。本节主要介绍这种编译器的基本原理和使用方法,以及编译过程中所产生的错误的原因及对策。23.3.1 GCC简介 Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%30%。 23.3.2 GCC的执行过程 虽然称GCC是C语言的编译器,但使用GCC由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而且要经历4个相互关联的步骤:预处理(也称预编译,preprocessing)、编译(compilation)、汇编(assembly)和连接(linking)。 23.3.3 GCC的基本用法和选项 在使用GCC编译器的时候,必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数可能根本就用不到,这里只介绍其中最基本、最常用的参数。 23.4 GNU make的介绍本节介绍GNU make 的用法。make 是所有想在Unix /Linux系统上编程的用户必须掌握的工具。如果写的程序中没有用到 make,则说明写的程序还只是个人的练习程序,不具有任何实用的价值。也许这么界定过于严格,但在任何稍具规模的程序中的确定应用到make。23.4.1 多文件项目1. 为什么要使用多文件项目2. 何时分解项目3. 怎样分解项目23.4.2 GNU make工具如果,用户有在其他软件平台上开发软件的经验,那么这些程序对于用户来讲是很好学的。毕竟,对软件开发的掌握是建立在实践中的。1. 使用make来编译程序2. 基本 Makefile 结构 3. 编写 make 规则4. Makefile变量5. 隐含规则(Implicit Rules)6. 函数23.5 gdb调试工具Linux 包含了一个叫gdb的GNU调试程序。gdb 是一个用来调试C和C+程序的调试器,它有非常好的调试特性。它能在程序运行时观察程序的内部结构和内存的使用情况。23.5.1 启动gdb23.5.2 gdb的功能gdb所提供的功能。 堆栈跟踪。 监视程序中变量的值。 设置断点以使程序在指定的代码行上停止执行。 一行行地执行代码。23.5.3 gdb基本命令 gdb 支持很多的命令使其实现不同的功能。这些命令从简单的文件装入到允许检查所调用的堆栈内容的复杂命令, 表23-3列出了在用 gdb 调试时会用到的一些命令。表23-3 基本 gdb 命令命 令描 述file装入想要调试的可执行文件kill终止正在调试的程序list列出产生执行文件的源代码的一部分next执行一行源代码但不进入函数内部 step执行一行源代码而且进入函数内部run执行当前被调试的程序quit终止 gdbwatch使用户能监视一个变量的值而不管它何时被改变break在代码里设置断点,这将使程序执行到这里时被挂起make使用户能不退出 gdb 就可以重新产生可执行文件shell使用户能不离开 gdb 就执行 UNIX shell 命令23.6 编 程 语 言在Red Hat Linux中集成了好几种编辑环境和编译器,它们为各种编程语言提供相应的开发环境,这些编程语言主要包括shell命令脚本、C/C+、gawk编程

温馨提示

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

评论

0/150

提交评论