Android NDK编译器openssl发生错误

用户名

我试图使用Android-OpenSSLibraries通过AES解密制作简单的测试程序。编译器/链接器向我显示一个错误。编译器:

error: undefined reference to 'AES_set_encrypt_key'
error: undefined reference to 'AES_encrypt'
error: undefined reference to 'AES_set_decrypt_key'

这是我的Android.mk文件,

LOCAL_PATH := $(call my-dir)
$(info $(LOCAL_PATH))
include $(CLEAR_VARS)

LOCAL_MODULE := demo
LOCAL_CFLAGS := -I/some/include/path
LOCAL_LDLIBS := \
        -llog \
        -lz \
        -lm \

LOCAL_SRC_FILES := \
       aes_api.c \
        io_module.cpp \
        jni_native.cpp \
        JniConstants.cpp \
        JNIHelp.cpp \
        libcrypto.so \
    PosixFile.cpp \

LOCAL_C_INCLUDES := \
    $(LOCAL_PATH)/include \
    $(LOCAL_PATH)/include/openssl
$(info  $(LOCAL_C_INCLUDES))

LOCAL_SHARED_LIBRARIES := \
        $(LOCAL_PATH)/libcrypto.so

include $(BUILD_SHARED_LIBRARY)
JBL

您的LOCAL_SHARED_LIBRARIES内容不正确。您必须为其指定模块,而不是共享对象的路径。

定义此变量之前,应具有以下内容:

include $(CLEAR_VARS)

#Name it as you want, it doesn't matter. For consistency, let's name it LibCrypto
LOCAL_MODULE := LibCrypto 
LOCAL_EXPORT_C_INCLUDES := <path/to/Libcrypto/includes>
LOCAL_SRC_FILES := <path/to/libCrypto/shared/object>/libcrypto.so

include $(PREBUILT_SHARED_LIBRARY)

然后在您LOCAL_SHARED_LIBRARIES使用模块名称直接引用它时:

LOCAL_SHARED_LIBRARIES := LibCrypto

请注意,您可以通过定义其他类似的“模块”来添加一个以上的库,甚至可以预先构建自己(使用include $(BUILD_SHARED_LIBRARY)),然后按以下方式引用多个模块:

LOCAL_SHARED_LIBRARIES := module1 \
                          module2 \
                          ...

我强烈建议您访问并保留有关Android.mk规范的此链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章