arm64-v8a的Android NDK r10c构建错误:没有这样的文件或目录#include <sha1.h> </sha1.h>

时间:2014-11-04 11:10:51

标签: android android-ndk sha1 arm64

我有一个本机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的代码。 它对我来说很好。

1 个答案:

答案 0 :(得分:2)

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

以前暴露的SHA1支持似乎并不是真的有意 - 在文档中没有真正提到它,而且“Stable 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。