无法加载库“ libdl.so.2”

Kum*_*nak 2 java-native-interface android native

我一直在尝试将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,我尝试加载该库,但仍无法解决依赖关系。

你能指出我在这里我想念的吗?

Chr*_*ton 5

你不能做这个。

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

对版本库名称(.so.2-Android目前不支持的名称)的强烈渴望表明该库不是为Android构建的。

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

有些人通过在chroot中放置一小部分debian-arm或类似的东西来设法在root用户的设备上使用普通的linux用户空间组件,但这需要root用户进行设置,而且jni不能从应用程序进程进行链接。您的应用程序流程已经与Android的C库紧密相连,因此您无法真正替代另一个。