【问题标题】:Error no such file or directory when build openssl in ndk在 ndk 中构建 openssl 时出错,没有此类文件或目录
【发布时间】:2014-01-13 07:21:06
【问题描述】:

我正在开发一个使用 AES 加密来加密和解密文件的 Android 项目。但是Java中内置的Cipher真的很慢。在做了一些研究之后,我决定使用 NDK 为 OpenSSL 库中的 aes 构建一个包装器。于是我创建了一个Android项目:

Android项目结构:

src
res
jni
    openssl-1.0.1e (openssl source code folder)
    Android.mk

    wrapper-folder
        aes_wrapper.c
        Android.mk
        Application.mk

首先我的 aes_wrapper.c 有一个非常简单的功能并且 ndk-build 成功。但是当我尝试编写加密函数时,我在 aes_wrapper.c 中包含“../openssl-1.0.1e/crypto/aes/aes.h”,出现以下错误:

openssl/opensslconf.h no such file or directory

头文件opensslconf.h位于../openssl-1.0.1e/include/openssl

谁能告诉我如何解决这个问题?非常感谢,对我糟糕的英语感到抱歉。

编辑:这里是 Android.mk

  1. 在文件夹 openssl-1.0.1e/crypto/aes

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := libaes
    
    LOCAL_SRC_FILES := aes_cbc.c aes_cfb.c aes_core.c aes_ctr.c aes_ebc.c aes_ige.c         aes_misc.c aes_ofb.c aes_wrap.c aes_x86core.c
    
    include $(BUILD_STATIC_LIBRARY)
    
  2. 在文件夹包装中

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := aes_wrapper
    LOCAL_SRC_FILES := aes_wrapper.c
    LOCAL_LDLIBS    := -lz -ljnigraphics
    
    LOCAL_STATIC_LIBRARIES += libaes
    
    LOCAL_IS_SUPPORT_LOG := true
    ifeq ($(LOCAL_IS_SUPPORT_LOG),true)
    LOCAL_LDLIBS += -llog
    endif
    
    include $(BUILD_SHARED_LIBRARY)
    

【问题讨论】:

  • 你的 Android.mk 中包含头目录吗?发布你的 Android.mk 真的很有帮助。
  • @user2359247 我添加了 2 个 Android.mk。请帮我。非常感谢。

标签: android android-ndk openssl aes


【解决方案1】:

您应该在您的 Android.mk 中包含相应模块下的头文件,如下所示:

LOCAL_C_INCLUDES := /path/to/openssl-1.0.1e  

在这种情况下,我认为 jni/openssl-1.0.1e 就足够了。模块的最终外观应如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := aes_wrapper 
LOCAL_SRC_FILES := aes_wrapper.c 
LOCAL_LDLIBS := -lz -ljnigraphics
LOCAL_C_INCLUDES := jni/openssl-1.0.1e 
LOCAL_STATIC_LIBRARIES += libaes

LOCAL_IS_SUPPORT_LOG := true 
ifeq ($(LOCAL_IS_SUPPORT_LOG),true) 
  LOCAL_LDLIBS += -llog endif

include $(BUILD_SHARED_LIBRARY)

【讨论】:

  • 你的建议很有用。至少,我现在有关键字来找出问题所在。谢谢。
  • 再次感谢。我已经解决了。现在是包装器的时候了。
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2016-02-26
  • 2019-01-06
  • 2022-07-27
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多