background image

注意

Red Hat v5.2

使用g l i b c库。如果用户从互联网中下载或更新在本章中安装的程

序时,必须知道 g l i b c的信息。用户可以使用 rpm -q glibc命令来查出已经安装的 g l i b c
库的版本号。在作者的系统中,使用 rpm -q glibc命令将显示 g l i b c - 2 . 0 . 7 . 2 9。

2.1   

基本概念

也许有人以前从没有编译过 L i n u x应用程序,在此介绍一些基本概念,以便能诊断出问题

所在。

1. tar

t a r

,即tape archiver,它可以把几个文件组合成一个文件,并可以选择是否进行压缩。这

个命令过去通常用来进行备份,以便使数据存储在磁带中。当 t a r文件被压缩时,它们有一
个. g z的后缀;当 t a r文件没有压缩时,它们有一个 . t a r的后缀。

2. gcc

gcc 

是G N U的C编译器。它的工作是把人可以看懂的源代码文件编译成机器可以读懂的目

标文件。 C源文件通常有 . c的后缀名,目标文件通常有 . o的后缀名。如果编译工作不能正常进
行,就是碰到了一个编译期的错误,或者说:语法错误。在大多数情况下,不彻底的编译通
常是编译器找不到一个或几个包含文件而产生的。包含文件都有一个 . h的扩展名,通常用来
定义不同的系统信息,以及将多个不同的 . c文件所共有的信息收集在一起。

3. make

m a k e

是一个常用的工具程序,是用来帮助进行编译的。它的工作是用来只编译那些还没

有编译过的源文件。编译 . c文件将生成一个 . o文件,如果 . c文件比 . o文件更新,也就是说,到
上次编译之前源文件被编辑过,那么 m a k e将会重新编译 . c文件。 m a k e指令一般是寻找一个
M a k e f i l e

文件,在这个文件中包含有一个或多个能执行的目标,例如, make clean会告诉m a k e

执行清除目标。

4. ld

l d

是G N U的链接程序。它的工作是把所有的目标文件和库链接起来,创建一个单一的可

执行文件。幸运的是,基本上不用手工运行这个程序,因为 M a k e f i l e将会考虑到所有的编译细
节。

5. ldconfig

l d c o n f i g

会为在多个库目录(在 / e t c / l d . s o . c o n f中指定)中寻找共享库。共享库常被多个应

用程序使用,它们的文件名中的某个地方有 . s o,例如, l i b q t . s o . 1 . 4 2是一个共享库。在编译完
毕之后,有可能需要在 / e t c / l d . s o . c o n f文件中增加一个目录,并且运行 ldconfig -v命令。

6. ./configure 

c o n f i g u r e

将会在计算机中寻找一些关键信息,例如,安装的是哪一种 C编译器、包含文件

在哪里等等。然后, c o n f i g u r e将会按照所用的计算机配置重新修改 M a k e f i l e文件。应该使
用. / c o n f i g u r e在当前目录下运行程序,以避免偶然运行 $ PAT H环境变量中的目录下的其他程
序。

7. 

符号连接

符号连接允许使用者可以为一个已经现有的文件指定另一个不同的名字。例如,使用者

有可能想把一个名为 l i b q t . s o . 1 . 4 2的文件称为 l i b q t . s o . 1。符号连接基本上可以使用户把一个文

6

计计

PHP3 

程序设计

下载