前 言
Linux系统基于开源软件思想所产生,而且促进了开源软件技术的发展,这种先进的软件设计思想引领着全球软件业的变革,为软件技术的发展带来了强劲的动力。随着Linux系统的发展和广泛应用,今天的Linux系统已经占据了绝大多数嵌入式系统和PC服务器的市场份额,其桌面系统的普及率也逐年上升。越来越多的开发者希望了解Linux系统开发技术,特别是基于Linux系统上最流行的C语言开发技术。
为了方便广大读者学习,我们花了近一年时间编撰了这本教程,全面介绍了Linux系统上C语言开发技术。本书由浅入深,适合各个水平阶段的读者学习。同时我们将Linux所依存的开源软件思想介绍给读者,并将其与当前流行的软件工程思想结合,通过案例贯穿于全书。力求使读者学习完本书后,不但能掌握开发技术,还能获得与国际一流的软件工程师共同工作的能力。
作者一直从事技术研究,曾经为《程序员》、《电脑报》和优快云社区翻译和编撰了很多相关的技术文章,但觉得独立的文章对普通读者帮助不大,所以特写本书,希望将自己的经验和更多的读者分享。
本书特点
1.配视频讲解光盘
为了让读者更加快速、直观地学习本书内容,作者专门为本书录制了大量多媒体语音视频进行讲解。读者可以结合视频讲解更高效地学习,学习效果更好。
2.循序渐进,由浅入深
为了方便读者学习,本书首先让读者了解Linux,并掌握Linux系统开发的思想和所需工具及组件。读者在掌握工具的基础上,逐渐学习如何在Linux系统下进行C语言开发。从而读者可以边学习,边动手,更快地掌握Linux系统下进行C语言开发各种知识。
3.技术全面,剖析思想根源
抛开开源思想来研究Linux开发技术是徒劳的,开发者仅仅只能掌握表面的开发技术,而不能获得提高软件开发效率与项目成功率的科学方法。我们花费3个多月的时间进行前期准备,更新统计了大量的技术信息,并与实际项目开发经验结合,将Linux系统开发技术、C/C++语言开发技术、软件工程思想融会贯通,将本书撰写成思想和内容都极其丰富的计算机教程。
4.深入剖析难度案例
本书选择了一些比较难的软件项目作为案例分析,并贯穿全书逐步实现。这些案例包含当前流行的开发技术,并实践了先进的软件设计思想。读者通过学习和实践本书,不但能掌握开发技术,还能获得与国际一流的软件工程师共同工作的能力。
本书内容
第1章:介绍Linux系统的基本概念和安装方法,Linux系统是一个开放的操作系统,理解了GNU项目后可快捷的开发各种软件。在学习的同时,读者可根据自身需要安装Linux操作系统,为实践各种开发技能打好基础。
第2章:详细说明Linux系统的基本操作,其中包括如何登录Linux系统、shell的基本命令和作为shell接口实现形式的控制台与终端。另外本章还介绍了Linux的文件与目录,简单讲解了Linux系统输入与输出的概念。
第3章:讲解Linux系统下编译C和C++语言的编译器GCC和G++的基本概念及操作。介绍怎样与文本编辑器vi的结合,组成最简单的程序开发环境。并通过程序和进程的概念,GCC和G++编译器的设计标准,使读者在深入学习C语言时,正确认识ANSI C标准,避免程序错误的产生。本章的最后介绍GDB调试器,读者还需要在此后的学习中不断摸索该工具的操作方法。
第4章:介绍一些高级的文本编辑器和集成开发环境,读者在学习后面的章节时,可使用集成开发环境编辑和运行程序,在实际操作中积累经验。
第5章:详细介绍C语言的基础知识以及GNU项目为C语言开发提供的丰富的工具,同时引入流程图的概念,流程图能将任何复杂的程序抽象为程序员间通用的符号语言。另外,本章还介绍了算法的概念和软件工程知识,将程序设计和软件开发作为一门工程学对待。为了让读者能体验Linux系统上程序开发的过程,本章最后部分引入一个媒体播放器项目。该项目贯穿全书,逐步实现,帮助读者检验学习成果。
第6章:介绍C语言的基本组成部分。数据类型、运算符和表达式构成了C语言的语法,是熟悉和掌握这些信息是学习C语言的必经之路。
第7章:介绍C语言基本的输入和输出函数、条件控制语句和循环控制语句,通过举例说明这些基本语句的用法,描述出程序的基本结构。从本章开始,将介绍如何设计一个媒体播放器程序,这一课题让初学者望而生畏,但后面章节会根据所学的内容逐步实现该程序,读者也可以先下载Totem电影播放机源代码进行初步的分析,以提高源代码阅读 能力。
第8章:主要对C语言中数组和指针的用法进行阐述,数组和指针都是C语言学习的难点,同时也是最能体现C语言功能强大的地方。本章虽不能完全涵盖这些内容,但将在实例程序中对这些问题深入探讨。
第9、10章:具体说明C语言的函数、函数的设计方法及工作原理、字符串处理的各种函数和内存处理函数。
第11章:详细阐述复合数据类型,利用复合数据类型,可设计出队列、链表、堆栈等动态数据结构。
第12章:说明C++语言的面向对象程序设计思想和一些新的特性,虽然C++语言并不是本书的重点,但在Linux系统程序设计中,特别是GTK+图形化程序设计,使用了大量与面向对象编程有关的思想,学习C++语言对理解这些新的编程思想有极大的帮助。
第13章:主要讲解通过系统调用方式实现的各种文件操作,正确地认识文件概念是掌握Linux系统文件操作编程的基础。
第14章:以普通文件为例讲解了文件I/O操作的各种函数,这一用法是文件I/O操作的重点。
第15章:阐述进程的基本概念和基本操作方法,讲解与进程操作有关的Linux系统调用函数。
第16章:本章讲解进程间通信的机制和以管道方式进行进程间通信的相关系统调用函数,同时也介绍基于D-BUS消息总线系统实现更为简单方便地进程间通信方式。
第17章:说明线程的概念和POSIX线程库,除此以外Linux还有很多线程的实现形式,每种形式都有其优点和缺点,有的甚至并不完全与POSIX标准相兼容。
第18章:介绍计算机网络的相关概念,以及使用套接字进行网络间通信的方法及具体适用范围。
第19章:阐述函数库实现各种网络应用的方法,并不仅只注意这些函数库的细节,而是希望读者能够通过本章的学习掌握选择函数库和使用函数库的能力。
第20、21章:介绍数据库的概念和通过接口访问数据库的方法,以及常用的数据库接口和通过网络连接数据库的方法。
第22、23、24章:介绍Linux系统的桌面环境和相关的函数库,GTK+的常用界面构件和使用界面构件编程的基本方法以及界面布局的基本概念和GTK+界面布局的方法。
第25章:详细讲解GTK+信号与事件处理方法和常用的信号与事件。
第26章:介绍使用Glade设计程序界面的方法,以及使用libglade函数库在C语言代码中进行代码联编的方法。
第27章:通过媒体播放器项目的实例讲解,梳理前面所讲述的知识点,阐述如何利用一个严格的项目管理制度对项目进行规划,并补充媒体播放器未实现的功能,突出实际应用中的各种编程技巧。
适合的读者
q 软件开发从业人员;
q 开源软件开发爱好者;
q 大中专院校计算机及相关专业的学生;
q 社会培训学生。