我一直在尝试从源代码编译 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
引入的任何文件会更有用。