未找到 opensslconf.h

未找到 opensslconf.h

我正在尝试构建 znort987 的解析器,并已执行sudo apt-get libssl-dev。我可以看到各种与 ssl 相关的头文件,/usr/include/opensslopensslconf.h在 openssl 文件夹中缺少这些文件,并且 make 命令引发了错误:

 make: *** No rule to make target `/usr/include/openssl/opensslconf.h', needed by `.objs/rmd160.o'.  Stop.

我在 32 位 AMD 笔记本电脑上使用 Ubuntu 14.04。

更新:我执行了以下步骤来清除我的安装:

sudo apt-get remove libssl-dev build-essential g++-4.4 libboost-all-dev libsparsehash-dev git-core perl
sudo apt-get install libssl-dev build-essential g++-4.4 libboost-all-dev libsparsehash-dev git-core perl
git clone git://github.com/znort987/blockparser.git
cd blockparser
make

现在我得到:

/usr/include/openssl/e_os2.h:56:33:致命错误:openssl/opensslconf.h:没有此文件或目录

答案1

如果您在 64 位系统上构建并且以 32 位为目标,则以下命令可以为我修复此问题:

sudo apt-get install libssl-dev:i386

答案2

这件事似乎发生在很久以前(具体来说,2013-05-20 16:56:06 UTC)。我遇到了一个奇怪的问题,看起来很像 OP,但结果发现是 swig 在编译时未能附加正确的包含集的问题。我最终搜索了源代码,只是为了确保这不是 ubuntu 软件包问题,但这似乎不是 ubuntu 的问题。

仔细观察,openssl 包将 opensslconf.h 移至支持多架构的目录结构。以下是详细的提交内容:http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/utopic/openssl/utopic-updates/revision/11.1.42如果你想知道我是如何得出这个修订版本的,我遵循了 Debian 规则的注释修订版本,这是一个令人惊讶的有效方法来弄清楚发生了什么:http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/utopic/openssl/utopic-updates/annotate/head:/debian/rules

提交者 Kurt Roeckx 在变更日志中写道:

  • 移至 /usr/include/$(DEB_HOST_MULTIARCH),并标记 libssl-dev Multi-Arch:相同。

公平地说,我希望 opensslconf.h 至少与其余逻辑相关的标头一起符号链接到 /usr/include/openssl 文件夹中。但这不是错误,这只是我的看法。对于像我一样遇到此问题的人来说,只需稍微嗅探一下缺失的包含项即可让事情顺利进行。

致 OP,现在已经过去很久了,但我刚刚在 14.04 LTS x64 机器上执行了您的确切步骤,并没有遇到您遇到的问题。也许问题随着时间的推移已经解决了。希望这些能有所帮助。

答案3

已执行 sudo apt-get libssl-dev。我可以在 /usr/include/openssl 中看到各种与 ssl 相关的头文件,但 openssl 文件夹中缺少 opensslconf.h,并且 make 命令引发错误...

听起来好像包裹有缺陷。

<openssl/opensslconf.h>是由 OpenSSL 的Configure命令创建的。它应该包含在发行版文件中。我能找到的最早提及的是 OpenSSL 的0.9.2 版的变更日志

提交错误报告至https://bugs.launchpad.net/ubuntu/+filebug/?no-redirect

答案4

看起来这是 32 位系统与 64 位系统之间的问题。我清除了所有内容,自己下载并构建了 Openssl,并按照说明构建了解析器。在 lnk 阶段,它跳过了“不兼容的 libcrypto”,然后失败了。

因此,我推测所需的库仅适用于 64 位系统,并且在 32 位系统上安装 libssl-dev 时会被跳过。如果错误消息更清晰就更好了。

相关内容