c - 如何编译 GnuTLS

我试图在 Centos 6.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.

我错过了什么?

祝你好运

最佳答案

问题在于 nettle 不会构建 libhogweed,除非如您所见,libgmp 的开发头文件存在。不幸的是,文档和 .configure --help 以及 configure 的输出没有说明这一点。

同时,gnuTLS 文档也没有解释这一点(正如您所注意到的,这里的配置输出不是很有帮助)。尽管 libgmp 被列为 pre-req,但由于某种原因 libhogweed 不是(可能是因为它被假定为 nettle 的一部分)。您的配置错误“找不到 -lgmp”的原因是 libgmp 不存在,但 libhogweed.so 也不存在,因为它是隐藏的可选 荨麻的一部分。如果您随后安装 libgmp-dev 并为 gnutls 运行 configure,您将得到相同的“正在检查 libnettle...否”。这应该说的是“检查 libhogweed...不”,但是负责 conf 脚本的人都懒得打破它(我想可以提交一个补丁)。

换句话说,你需要先安装 libgmp-dev 然后重新构建 nettle,然后再构建 gnutls。

https://stackoverflow.com/questions/9508851/

相关文章:

android - 运行 Android Studio gradle build 时如何使用所有 C

android - 在 Gradle 产品 flavor 上调试签名配置

ios - 使用 iOS 构建主机时 Xamarin 实际在做什么?

c++ - 关于如何部署 C++ 代码以在任何地方工作的提示

android - 如何使用 Expo CLI 为 android 构建 64 位 native 代

java - 多个存储库的 Maven 设置

eclipse - noClassDefFoundError 使用 Eclipse 的 Scala

gradle - 启动一个 Gradle 守护进程,1 个忙碌和 6 个停止的守护进程无法重用,使用

build - 递归 CMake 搜索头文件和源文件

Android NDK - 使两个 native 共享库相互调用