6

我使用 android ndk build 成功编译了 openssl,并且成功构建了 .so 文件。

我正在尝试在 android 项目中“包含”构建的 .so 文件。

在下面的行中出现错误:

#include "openssl/evp.h"

致命错误:openssl/evp.h:没有此类文件或目录编译终止。制作:* [obj/local/armeabi/objs/iedemo/anotherdemo.o] 错误 1

但是,我包含 stdio.h 和 string.h 文件。

我正在探索 /usr/include/openssl 目录,我可以在这里找到所有与 openssl 相关的 .h 文件。并且,stdio.h 和 string.h 文件存在于 /usr/include 目录中。

我也安装了libssl-dev包。命令(sudo apt-get install libssl-dev)

请帮我!!

4

4 回答 4

10

在 Debian 或 Ubuntu 上遇到此问题时,可以使用以下命令解决:

apt-get install libssl-dev

于 2018-05-21T15:59:50.170 回答
2

对于像我这样使用windows操作系统的人,他们不小心来到了这个页面,上面的解决方案并没有解决他们的问题,可以尝试以下解决方案:
我从官方网站下载了OpenSSL可执行文件,并选择了描述为的文件包含以下行(OpenSSL 的创建者推荐给软件开发人员)。
在编写本解决方案时,文件版本为(Win64 OpenSSL v3.0.0),可直接从以下链接下载。

这是更多声明的图像:
在此处输入图像描述

之后,我做了以下步骤:

  1. 从 .exe 文件安装 OpenSSL。
  2. 复制bin文件夹目录路径(在我的例子中是 C:\Program Files\OpenSSL-Win64\bin)并将其添加到系统环境变量中。
  3. 复制包含文件夹的目录路径(在我的例子中是 C:\Program Files\OpenSSL-Win64\include)并将其添加到系统环境变量中。

然后编译使用 openssl 库和头文件的源代码,它们应该编译没有错误。

于 2021-11-08T21:22:27.120 回答
1

Android.mk应该指定 openssl 包含目录(不是/usr/include/openssl,而是与您使用 NDK 为 Android 构建的文件一起使用的目录。类似于

LOCAL_C_INCLUDES += /home/Charan/openssl/include

但是您还需要指定.so已构建文件的路径,并确保它们与您的应用程序正确部署。事情可能会变得一团糟,但幸运的是有一个工作示例:openSSL using Android's NDK questions

于 2012-10-23T21:47:55.573 回答
1

我在使用 PECL 构建 PHP 包时遇到了这个问题,并且能够将头文件安装为openssl-devel的一部分

在 CentOS/RHEL 上:yum install openssl-devel

在 Ubuntu/Debian 上:apt-get install openssl-devel

于 2017-07-28T06:23:21.993 回答