gpt4 book ai didi

android - 无法在 Windows/Cygwin 上为 Android NDK 构建外部 OpenSSL 库

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:03:28 25 4
gpt4 key购买 nike

我需要为 Android 应用程序构建最新的 OpenSSL (1.0.0g)。我正在尝试按照 https://github.com/fries/android-external-openssl 给出的示例进行操作,但我无法构建它。

我正在运行 Windows 7 Professional(64 位)和完整的最新 Cygwin。我已经安装了 Android SDK 和 NDK,我可以成功构建和运行 NDK 的 hello-jni 示例应用程序。

我创建了一个名为 hello-openssl 的新示例 NDK 应用程序。在它的 jni 目录中,我创建了一个 openssl 目录。在那里,我解压缩了 https://github.com/fries/android-external-openssl/zipball/master ,它在 c:\android\android-ndk\samples\hello-openssl 下给了我这个树结构:

jni
+- openssl
+- apps
+- crypto
+- include
+- openssl
+- ssl

然后我修改了 jni 目录中的 Android.mk 文件以尝试包含 OpenSSL 文件:

subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
openssl \
))

include $(subdirs)

现在当我执行 ndk-build 时,它编译了几个 .c 文件,但很快就失败了:

Compile thumb  : crypto <= cryptlib.c
In file included from jni/openssl/crypto/cryptlib.c:117:
jni/openssl/crypto/cryptlib.h:65:18: error: e_os.h: No such file or directory
jni/openssl/crypto/cryptlib.h:72:28: error: openssl/crypto.h: No such file or directory

我找到了 http://osdir.com/ml/android-ndk/2010-07/msg00424.html ,它告诉我“添加jni 和 jni/include 到 crypto/Android.mk 中的上述 LOCAL_C_INCLUDES",但我无法弄清楚我应该使用什么语法来实现这一点。

我也不知道我有正确的目录结构。

我真诚地感谢可以提供的任何帮助。

谢谢!

最佳答案

我通过放弃 https://github.com/fries/android-external-openssl 解决了这个问题而是使用 https://github.com/guardianproject/openssl-android .

它基于更新的 OpenSSL (1.0.0a),并且在没有任何修改的情况下构建在 NDK 中。

请注意,为了在 Android 应用程序中使用这些库,您必须重命名它们。如果你简单地在你的应用程序中包含生成的 libssl.so 和 libcrypto.so,然后调用 System.LoadLibrary("crypto") 和 System.LoadLibrary("ssl"),你将获得 Android 系统中包含的 OpenSSL 库,而不是您的自定义库。

为此,只需在每个 Android.mk(即/crypto、/ssl , 和/apps).

然后在您的 Android 应用中,调用 SystemLoadLibrary ("cryptox") 和 System.LoadLibrary ("sslx")

关于android - 无法在 Windows/Cygwin 上为 Android NDK 构建外部 OpenSSL 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9065409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com