gpt4 book ai didi

android - 无法加载库 "libdl.so.2"

转载 作者:行者123 更新时间:2023-12-04 02:07:32 28 4
gpt4 key购买 nike

我一直在尝试将 linux 编译的预构建共享库与我的 android jni 应用程序一起使用,但是当我尝试运行该应用程序时,出现以下错误:

04-16 19:09:13.633: E/dalvikvm(11810): dlopen("/data/app-lib/com.lXXXX.XXXX.connect-2/libXXX_embedded_shared.so") 失败:无法加载库: soinfo_link_image(linker.cpp:1636):无法加载“libXXX_embedded_shared.so”所需的库“libdl.so.2”;由 load_library(linker.cpp:746) 引起:找不到库“libdl.so.2”

我在 android/system/lib 中找不到 libdl.so.2 但有一个库 libdl.so 我试图加载它但它仍然没有解决依赖关系。

你能指出我在这里遗漏了什么吗?

最佳答案

你不能这样做。

Android 和普通的 linux 具有截然不同的用户空间,特别是它们使用完全不同的 C 库和关联的不兼容动态链接器。

对版本化库名称的渴望(.so.2 - Android 目前没有做的事情)表明这个库不是为 Android 构建的。

您需要使用 android ndk 重建所有库,方法是创建 Android.mk 和类似文件来驱动正常的 ndk 构建系统,或者使用 ndk 实用程序生成“stand”单独的工具链”并将项目的构建系统指向生成的以 android 为目标的 gcc、ld 等。

有些人通过在 chroot 中安装最小化的 debian-arm 或类似软件,设法在 root 设备上使用正常的 linux 用户空间组件,但这需要 root 来设置,并且不能通过 jni 从应用程序进程链接反正。您的应用程序进程已经与 Android 的 C 库紧密相关,因此您无法真正替代另一个。

关于android - 无法加载库 "libdl.so.2",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111463/

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