gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:29:35 24 4
gpt4 key购买 nike

我使用这个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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com