我试着在Centos6.2上编译好几次gnutls库,但运气不好。步骤如下:
我下载了Nettle 2.4

[root@localhost opt]# wget http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz
[root@localhost nettle-2.4]# tar zxvf nettle-2.4.tar.gz
[root@localhost nettle-2.4]# cd nettle-2.4
[root@localhost nettle-2.4]# ./configure --enable-shared --prefix=/usr



  Version:           nettle 2.4
  Host type:         x86_64-unknown-linux-gnu
  ABI:               64
  Assembly files:    x86_64
  Install prefix:    /usr
  Library directory: ${exec_prefix}/lib64
  Compiler:          gcc
  Shared libraries:  yes
  Public key crypto: no

我运行命令makemake install
我下载了最新的gnutls
 ./configure --with-libnettle-prefix=/usr

hecking for shared library run path origin... done
checking whether to use nettle... yes
checking for libnettle... no
configure: error:
  ***
  *** Libnettle 2.4 was not found.

我错过了什么?
最美好的祝福

最佳答案

问题是,除非出现libgmp的dev头文件,否则nettle不会构建libhogweed。不幸的是,docs和configure的.configure --help和output对此没有任何说明。
同时,gnutls文档也没有解释这一点(正如您注意到的,这里的配置输出也不是很有帮助)。虽然libgmp被列为一个先决条件,但出于某种原因libhogweed不是(可能是因为它被认为是荨麻的一部分)。配置错误“cannot find-lgmp”的原因是libgmp不存在,但libhogweed.so也不存在,因为它是nettle的隐藏可选部分。如果您随后安装libgmp dev并只运行gnutls的configure,您将得到相同的“检查libnettle…“不”。这应该说的是“检查是否有libhogweed…不需要”,但是负责conf脚本的人太懒了,无法将其分解(我想可以提交一个补丁)。
换句话说,您需要安装libgmp dev,然后在构建gnutls之前重新构建nettle。

09-27 08:24