5.1. 尝试编译 glibc 时 configuremake 报错

有时你会遇到配置错误,提示你例如不满足某个要求——这在软件或其他库包版本过旧时很常见。我在一系列程序中都遇到过这种情况,尤其是在编译所有静态软件时。通常情况下应该没有问题:获取所需软件或库的最新版本,然后按照源代码树中找到的说明(通常称为README, INSTALL或类似的文件)进行编译。

但有时会出现这种情况,就是无法正常工作。例如,我编译新版本的 binutils 时遇到了问题(这也是我在要求中提到它们的原因之一),因为我需要编译 glibc。反过来,binutils 的 configure 脚本告诉我,“你的 glibc 版本太旧了!” 所以我想,这是蛇开始吃自己的尾巴了。幸运的是,这个问题有解决方案:如果你不能迈出一大步,那就尝试迈出小步,但多迈几步。

在我的发行版中,包含了一个版本号为 2.1.1 的 glibc。为了解决这个错误,我尝试编译了版本 2.1.3,这没有问题。在我安装了这个版本的库之后,我再次尝试编译 binutils,这次所有的要求都满足了。

如果你遇到这样的 “循环”,尝试找出所需软件的最低版本,然后下载该版本(我认为这就是为什么 FTP 服务器上仍然存在这么多旧版本的原因之一)。成功编译和安装后,再次尝试构建抱怨版本问题的软件;在大多数情况下,你现在应该能够编译了。可能需要你继续使用这种方法来编译缺失或旧的软件。这就是我所说的 “老鼠的长尾”“多米诺骨牌效应”。你只想做一件事,但在你能采取你想要的行动之前,你需要做更多的事情。这可能非常糟糕,但也有一个好处:之后你可以相当肯定,在你完成安装时,许多真正旧的程序将被替换。