我试着在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
我运行命令
make
和make 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。