【问题标题】:Android NDK r10c build error for arm64-v8a: No such file or directory #include <sha1.h>arm64-v8a 的 Android NDK r10c 构建错误:没有这样的文件或目录#include <sha1.h>
【发布时间】:2014-11-04 11:10:51
【问题描述】:

我有一个本地 C 代码,它计算 SHA1 摘要。它使用 NDK r10b 编译没有问题。但是我在 NDK r10c 中遇到了这个错误:

[arm64-v8a] Compile        : my-library <= my-library-jni.c 
{PATH_TO_THE_FILE}/my-library-jni.c:3:18: fatal error: sha1.h: 
 No such file or directory
 #include <sha1.h>

我正在更新到 NDK r10c 以针对 64 位平台进行编译。似乎 64 位标头不包含 sha1.h。为什么?我该如何解决?我应该找到一些 SHA1 的 C 实现并将其包含在我的项目中吗?

编辑

我最终使用了来自http://oauth.googlecode.com/svn/code/c/liboauth/src/sha1.c 的代码。 对我来说效果很好。

【问题讨论】:

    标签: android android-ndk sha1 arm64


    【解决方案1】:

    我假设您没有尝试使用 NDK r10b 在 64 位模式下构建,因为我也没有找到 arm64-v8a 的 sha1.h 标头。

    似乎之前公开的 SHA1 支持并不是真正的意图——文档中的任何地方都没有真正提到它,“稳定 API”文档也没有提到它(我想这不能假设成为 C 库本身的一部分,即使在技术上它是)。您在 32 位模式下链接到的 libc.so 还包括 MD5 函数,这些函数根本不会在标头中公开,这使得这一切看起来更加无意识/无计划。

    即使它最初不是有意的,他们也将其保留在 32 位模式下以兼容,但选择在 64 位模式下删除此类意外包袱。

    一些提交链接以澄清: https://android.googlesource.com/platform/bionic/+/c82c0b7e07 https://android.googlesource.com/platform/ndk/+/69c6d8419%5E%21/

    是的,您的解决方案是找到 SHA1 的现有 C 实现(幸运的是,在各种许可下有许多不同的实现)并包含它。它们中的大多数都有非常相似或几乎相同的 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2014-06-04
      • 2017-12-29
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多