《【linux教程】23 Linux基本编程.pdf》由会员分享,可在线阅读,更多相关《【linux教程】23 Linux基本编程.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 提供第23章Linux基本编程本章的学习目标:了解什么是 GNU 计划及其意义 熟悉各种 GNU 计划实用程序 熟悉 GCC 编译器的用法和执行过程 了解多文件项目 熟悉 makefile 的结构 熟悉 gdb 调试程序23.1GNU 计划的实用程序计划的实用程序GNU(它代表 GNU is not UNIX)是由 Richard stallman 开发的一个与 UNIX 兼容的软件系 统。大 多 数 Linux 软 件 是 经 过 自 由 软 件 基 金 会(Free Software Foundation)的GNU(www.gnu.org)公开认证授权的,因而通常称为 GNU 软件。GN
2、U 软件免费提供给用户使用,并被证明是非常可靠和高效的。许多流行的 Linux 实用程序如 C 编译器、shell 和编辑器都是 GNU 软件应用程序。GNU 计划包括上百个命令、工具和工具的集合,以及文档。说实话,如果没有上百位的编程者用他们的时间和精力开发这些程序,Red Hat Linux 不会像现在拥有这么丰富的内容。23.1.1GNU 计划软件内容GNU 计划的实用程序分布在多个部分中。bin 实用程序、diff 实用程序以及 shar(shellarchive)实用程序主要用于开发工作;最常用的实用程序是文件实用程序、查找实用程序、shell 实用程序以及文本实用程序。表 23-1
3、 列出了 GNU 计划的各种实用程序。用户可以发现几乎所有的这些软件都已安装在用户的 Red Hat Linux 系统上。它们是在 Linux 系统安装时安装的,或是使用 rpm 命令或 Glint 软件维护 X11 客户事后更新的。表 23-1GNU 计划的各种实用程序应用程序集描述Red Hat Linux 9.0 基础教程 372 am-utils各种网络和文件系统工具,如 hostname 或 mountas一个基本的程序开发工具 GNU 的汇编器autoconf为源代码生成配置脚本的编程工具automake生成 makefile 的编程工具bashBourne Again shell
4、(是对 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 到 P
5、ostCsript 的转换器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交互性工具gmp.info一个
6、多精度的数学计算例程库第 23 章Linux 基本编程 373 gnusemacs 中的 Usenet 阅读器gpm在文本模式窗口下支持鼠标的例程库(包括 gpm 守护程序)gperf散列函数生成器gprof生成 profile 类型文件grepGNU 中的规则表达式查找工具gtkGNU 图形处理器(GIMP)的图形例程库gzip文件压缩程序集historyGNU 的历史库和文档(支持编程)indent格式化源代码的编程工具info准备和阅读 GNU 中 info 格式的文本文件的工具kpathsea目录搜索的程序库ld基本编程工具 GNU 链接器libc包含了几乎所有命令要用到的库例程lib
7、tool支持共享软件库的脚本和信息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 的交叉引用和
8、BibTeX 工具sc在 eamcs 和 gnus 中支持电子邮件的回复screenGNU 屏幕复用器sedGNU 中的流编辑器sh-utilsshell 工具,如 date、printenv、tee 和 who 等sharutils一系列 shell 存档工具,包括 unencode 和 uudecodestabs调试工具和格式的信息standardsGNU 程序的编程标准tar磁带存档命令Red Hat Linux 9.0 基础教程 374 termcapGNU 终端能力库和数据库texinfoTexInfo 文档的转换、准备和打印工具textutils文本工具,如 cat、head、so
9、rt、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,还有 Emac
10、s。这些文本编辑器如何选择?可以都试试看,然后选择自己喜欢的。反正它们都可以输入文本,都可以生成源代码。在此推荐 vim,简捷而好用。关于文本编辑器的内容在第 26 章详细介绍。23.3GCC 的介绍的介绍GCC 是 GNU C Compiler 的缩写,是 GNU/Linux 下最好的编译器之一。这个编译器稳定,而且文档齐全,大部分的自由软件都是用他编译的。如果使用 C,那么就可以选择 GCC。本节主要介绍这种编译器的基本原理和使用方法,以及编译过程中所产生的错误的原因及对策。23.3.1GCC 简介Linux 系统下的 GCC(GNU C Compiler)是 GNU 推出的功能强大、性能
11、优越的多平台编译器,是 GNU 的代表作品之一。GCC 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 20%30%。第 23 章Linux 基本编程 375 23.3.2GCC 的执行过程虽然称 GCC 是 C 语言的编译器,但使用 GCC 由 C 语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而且要经历 4 个相互关联的步骤:预处理(也称预编译,preprocessing)、编译(compilation)、汇编(assembly)和连接(linking)。23.3.3GCC 的基本用法和选项在使用 GCC 编译器的时候,必须给出一系列必
12、要的调用参数和文件名称。GCC 编译器的调用参数大约有 100 多个,其中多数参数可能根本就用不到,这里只介绍其中最基本、最常用的参数。23.4GNU make 的介绍的介绍本节介绍 GNU make 的用法。make 是所有想在 Unix/Linux 系统上编程的用户必须掌握的工具。如果写的程序中没有用到 make,则说明写的程序还只是个人的练习程序,不具有任何实用的价值。也许这么界定过于严格,但在任何稍具规模的程序中的确定应用到make。23.4.1多文件项目1.为什么要使用多文件项目2.何时分解项目3.怎样分解项目23.4.2GNU make 工具如果,用户有在其他软件平台上开发软件的经
13、验,那么这些程序对于用户来讲是很好学的。毕竟,对软件开发的掌握是建立在实践中的。Red Hat Linux 9.0 基础教程 376 1.使用 make 来编译程序2.基本 Makefile 结构3.编写 make 规则4.Makefile 变量5.隐含规则(Implicit Rules)6.函数23.5gdb 调试工具调试工具Linux 包含了一个叫 gdb 的 GNU 调试程序。gdb 是一个用来调试 C 和 C+程序的调试器,它有非常好的调试特性。它能在程序运行时观察程序的内部结构和内存的使用情况。23.5.1启动 gdb23.5.2gdb 的功能gdb 所提供的功能。堆栈跟踪。监视程序
14、中变量的值。设置断点以使程序在指定的代码行上停止执行。一行行地执行代码。23.5.3gdb 基本命令gdb 支持很多的命令使其实现不同的功能。这些命令从简单的文件装入到允许检查所调用的堆栈内容的复杂命令,表 23-3 列出了在用 gdb 调试时会用到的一些命令。表 23-3基本 gdb 命令命令描述file装入想要调试的可执行文件kill终止正在调试的程序第 23 章Linux 基本编程 377 list列出产生执行文件的源代码的一部分next执行一行源代码但不进入函数内部step执行一行源代码而且进入函数内部run执行当前被调试的程序quit终止 gdbwatch使用户能监视一个变量的值而不
15、管它何时被改变break在代码里设置断点,这将使程序执行到这里时被挂起make使用户能不退出 gdb 就可以重新产生可执行文件shell使用户能不离开 gdb 就执行 UNIX shell 命令23.6编 程 语 言编 程 语 言在 Red Hat Linux 中集成了好几种编辑环境和编译器,它们为各种编程语言提供相应的开发环境,这些编程语言主要包括 shell 命令脚本、C/C+、gawk 编程语言、Perl 编程语言、Python 语言和 Java 语言等。23.7本 章 小 结本 章 小 结Linux 是开发者的天堂。开发者可以控制特定的硬件环境,还可以创建自定义工具使得编程更加轻松。通常来说,学习编程的最好的方法就是读别人的代码,然后看它们是怎么写的。通过 Linux 和开发源代码使得有机会看到别人的源码,以便好好学习。23.8思考和练习思考和练习1.什么是 GNU 计划?2.什么是 GCC?试述它的执行过程?3.为什么要使用多文件项目?