1.5 示例程序和编译环境
本书给出了大量说明UNIX API函数用法的示例程序,这些示例程序中绝大多数都是可运行的完整程序,并且都能够在安装有Linux系统的PC机上运行。另外,因为它们都遵从UNIX标准,因此也基本无须修改就可以在其他任何UNIX系统中运行。你可以从华章网站得到本书中所有示例程序的源代码。
得到源代码后,可以用如下命令解开下载的源程序包unixexam.tar.gz:
%tar zxf unixexam.tar.gz
每一章的示例程序组织在以章节号命名的子目录中。第1章的例子位于目录~/exam/ch01,第2章的例子位于目录~/exam/ch02,等等。示例程序基本按它们出现的章节依次命名,例如,第1章的程序1-1命名为p1-1,程序1-2命名为p1-2;第7章的程序7-12命名为p7-12。但有少数程序除外,它们是其他程序要调用的函数或作为头文件。这种程序以函数名或头文件名命名。例如,每一章都需用到程序1-1,该程序的文件名是err_exit.h。同样,有几章中有若干个程序要用到程序5-6中定义的函数xmalloc(),因此该示例程序的文件名为xmalloc.c。
另外,为了减少示例程序中代码的篇幅,我们将同一章示例程序包含的所有头文件集中说明在一个头文件中,并以“ch”后随章节号命名,例如,第8章的头文件是ch08.h。
在Linux中编译本书的例子可使用如下编译命令:
%gcc p1-3.c –o p1-3
它编译程序p1-3.c并生成可执行文件p1-3。也可以使用下面更简单的命令:
%gcc p1-3.c
它生成默认的可执行文件a.out。
在本书以后的章节中,当涉及程序运行时,我们不再给出编译命令,并且假定a.out和所有与源程序主干名同名的文件都是上下文提及源程序的已编译过的可执行文件。
如果示例程序中用到了数学库函数、实时库函数或Pthreads线程库函数,则还要注意在编译命令中分别指明相应的库。例如:
%gcc p7-4.c –lm //用到了数学库函数
%gcc p8-9.c –lrt //用到了实时库函数
%gcc p13-1.c –Pthread //用到了Pthreads库函数