android - ndk-构建 "member ... in archive is not an object"

标签 android aes android-ndk

我使用这个AES库(C语言),
http://gladman.plushost.co.uk/oldsite/AES/aes-src-16-04-07.zip

我关注此页面并使用提到的命令编译 libaes.a,
http://forums.devshed.com/c-programming-42/aes-encrypt-decrypt-in-c-687368.html

gcc -c -O2 -fomit-frame-pointer aescrypt.c aeskey.c aestab.c aes_modes.c
ar rcs libaes.a *.o

我可以使用 libaes.a 毫无问题地编译和运行我的程序。

但是如果使用ndk-build来编译我的程序(确实修改了一点),
我总是收到此错误消息并且无法编译...

“...存档中的成员 aes_modes.o 不是对象...”

那个文件有什么问题?
或者流程有什么问题?

我的 Android.mk :

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := libaes
LOCAL_SRC_FILES := libaes.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_C_INCLUDES :=\
    /android-ndk-r6b/platforms/android-8/arch-arm/usr/include\
    /android-ndk-r6b/samples/hello-jni/jni/libaes
LOCAL_WHOLE_STATIC_LIBRARIES := libaes
include $(BUILD_SHARED_LIBRARY)


最佳答案

我感觉您使用 native 工具 (x86) 编译了 aes 并将其用作预构建库。我试过这个 Android.mk 并且它有效:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := aes
LOCAL_SRC_FILES := aes/aescrypt.c aes/aeskey.c aes/aestab.c aes/aes_modes.c

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES        := jni/aes
LOCAL_STATIC_LIBRARIES  := aes
LOCAL_MODULE            := hello-jni
LOCAL_SRC_FILES         := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

只需将 aes-src-16-04-07.zip 解压到 jni/aes 中。我认为最好使用 ndk 构建系统,因为它可以设置所有必要的选项。

还有 hello-jni.c(以防万一):

#include <aes.h>

void test() {
    aes_init();
}

关于android - ndk-构建 "member ... in archive is not an object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944034/

相关文章:

java - OpenSL ES无需重新创建音频播放器即可更改音频源

android - 在 viewpager2 中禁用动画

android - 如何在github和gitlab上托管Maven?

php - 在 PHP 中为 AES 256 生成 key

objective-c - 在 Objective-c 中使用 AES

c - 为什么 FreeImage 加载 BGR 格式的图像?

Android - 由于 errno=13,读取文件列表失败

Android Studio 不刷新新版本

typescript - 将 CryptoJS 与十六进制字符串一起使用

Android NDK UnsatisfiedLinkError - 一个令人惊讶的原因