如何最好地排除源包配置脚本的故障?

如何最好地排除源包配置脚本的故障?

我一直在尝试从源代码编译 GnuTLS 包,作为 BLFS(Linux From Scratch)系统的一部分。这里是它的 LFS 页面。

我已经安装了该页面上列出的所有必需和推荐的软件包;然而,当我./configure在 GnuTLS 源代码树的顶部运行时,根据脚本输出,它似乎没有找到其中几个包,例如 valgrind、libunistring、libtasn1。

所以,我只是想知道如果配置脚本似乎无法正常工作,解决此问题的最佳方法是什么?我查看了config.log,但这似乎没有多大帮助(至少在 valgrind 的情况下)。我还尝试查看配置脚本本身,但它是一个 40,000 多行的怪物。

好吧,我想我有点傻,误解了配置脚本。配置摘要是这样说的:

configure: summary of build options:

  version:              3.5.14 shared 44:6:14
  Host/Target system:   x86_64-pc-linux-gnu
  Build system:         x86_64-pc-linux-gnu
  Install prefix:       /usr
  Compiler:             gcc
  Valgrind:             no 
  CFlags:               -g -O2
  Library types:        Shared=yes, Static=no
  Local libopts:        yes
  Local libtasn1:       no
  Local unistring:      no
  Use nettle-mini:      no
  Documentation:        yes (manpages: yes)

我认为这意味着它没有找到这些包(我将“本地”解释为“在我的计算机上”)。然而,通过更详细地搜索输出,我发现了这些:

checking for LIBTASN1... yes
checking whether to use the included minitasn1... no

checking for libunistring... yes
checking how to link with libunistring... /usr/lib/libunistring.so

看来它确实找到了这些包,并且摘要中的“Local”一定是指 GnuTLS 自己的这些库的内置版本。当时有点困惑,但现在明白了。对于 valgrind,我看到这个:

checking for valgrind... valgrind
checking whether self tests are run under valgrind... no

因此,它似乎再次找到了它,尽管出于某种原因它似乎不想将其用于自测试。

不管怎样,我会继续构建它,看看它测试是否正常。

答案1

config.log应该包含失败的确切原因configure,但可能很难找到它。为此,您应该从config.log;的末尾开始在那里你会看到configure它停止时完整状态的转储,这是令人畏惧的,但如果你跳过它,你应该找到破坏的错误configure。查找Running config.status,然后向上滚动...

对于 Autoconf 生成的设置,阅读configure其本身并没有多大意义;查看其源代码configure.ac(或者configure.in如果它是旧软件)以及.m4引入的任何文件会更有用。

相关内容