gpt4 book ai didi

android - 将预构建库与 Android NDK 结合使用时出现构建问题

转载 作者:行者123 更新时间:2023-11-29 22:10:38 31 4
gpt4 key购买 nike

我有一个正在移植的程序,它在创建可执行文件时将多个库链接在一起。我已经使用独立工具链构建了所有这些库,并且使用独立工具链我能够创建可在 Android 设备上运行的可执行文件。所以,看起来我构建的库是有用的。现在我正在尝试将这些库与应用程序结合起来。所以,在我的 android.mk 中我有这样的东西:

LOCAL_PATH := $(call my-dir)
ROOT_PATH := $(LOCAL_PATH)

include $(call all-subdir-makefiles)
include $(CLEAR_VARS)

LOCAL_PATH = $(ROOT_PATH)

LOCAL_MODULE := test-libs

LOCAL_STATIC_LIBRARIES := staticA
LOCAL_SHARED_LIBRARIES := sharedA sharedB sharedC sharedD
LOCAL_SRC_FILES := test-libs.c

include $(BUILD_SHARED_LIBRARY)

对于每个库,我都有一个这样的 Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := sharedA

LOCAL_SRC_FILES := sharedA.so

include $(PREBUILT_SHARED_LIBRARY)

然后当我构建我的项目(在 eclipse 中)时,我得到了这个:

C:/ndk/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a(unwind-arm.o): In function `__gnu_unwind_pr_common':
/cygdrive/c/ndk/android-ndk-r7b/build/core/build-binary.mk:314: recipe for target `obj/local/armeabi/libtest-libs.so' failed
/tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libgcc/../gcc/config/arm/unwind-arm.c:1237: undefined reference to `__cxa_call_unexpected'

有什么问题吗?

此外,静态库和其中一个共享库不依赖于任何东西,如果我只包含它们,那就太好了。我的一个共享库只依赖于静态库。如果我只包含那些,但当我包含其他依赖于其他共享库的其他共享库时,就会出现此问题。

更新 1:好的,这似乎是因为我的 Application.mk 中的 APP_STL 设置被忽略了。我的 Application.mk 中只有: APP_STL := gnuSTL_shared如果我复制 libgnuSTL_shared.so 并将其视为另一个预构建的共享库,我的问题就消失了。知道为什么 APP_STL 不能正常工作。请注意,我可能搞砸了。我刚刚升级到使用 7b。使用 gnuSTL_shared 曾经为我与其他应用程序一起工作。回滚到 7 并不能解决问题。我想我在 Eclipse 中搞砸了。我将 Eclipse (windows) 与 sequoyah 一起使用。

最佳答案

看起来链接器给了你一个错误。你应该做的是:

在你的 LOCAL_MODULE := test-libs 下添加一个 LOCAL_LDLIBS。在这里,您需要包括编译预编译库时链接的所有库。例如:

LOCAL_LDLIBS := -lgnustl_shared -lgcc -llog -landroid -lstdc++

基本上您需要确定哪个库包含函数 __cxa_call_unexpected。快速谷歌显示它可能在 libstdc++ 中。确保在创建预编译库时也链接到此库。

关于android - 将预构建库与 Android NDK 结合使用时出现构建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727333/

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