简体   繁体   English

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

[英]could not load library “libdl.so.2”

I have been trying to use linux compiled prebuilt shared library with my android jni application, but when i try to run the application it gives following error: 我一直在尝试将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") failed: Cannot load library: soinfo_link_image(linker.cpp:1636): could not load library "libdl.so.2" needed by "libXXX_embedded_shared.so"; 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”; caused by load_library(linker.cpp:746): library "libdl.so.2" not found 由load_library(linker.cpp:746)引起:找不到库“ libdl.so.2”

i could not find libdl.so.2 in android/system/lib but there is a library libdl.so which i tried to load but it still did not resolve the dependency. 我在android / system / lib中找不到libdl.so.2,但是有一个库libdl.so,我尝试加载该库,但仍然无法解决依赖关系。

Can you please point me what i am missing here? 你能指出我在这里我想念的吗?

You cannot do this. 你不可以做这个。

Android and a normal linux have vastly different userspaces, in particular they use entirely different C libraries and associated incompatible dynamic linkers. Android和普通的Linux具有很大的用户空间,特别是它们使用完全不同的C库和关联的不兼容动态链接器。

The very desire for a versioned library name (the .so.2 - something Android doesn't currently do) is indicative that this library was not build for Android. 对版本库名称(.so.2-Android当前未执行的操作)的强烈渴望表明该库不是为Android构建的。

You need to rebuild all your libraries using the android ndk either by creating and Android.mk and similar files to drive the normal ndk build system, or by using the ndk utility for generating a "stand alone toolchain" and pointing your project's build system at the resulting android-targeted gcc, ld, etc. 您需要通过创建android.mk和类似文件来驱动正常的ndk构建系统,或者通过使用ndk实用程序生成“独立工具链”并将项目的构建系统指向android,使用android ndk重建所有库 。产生的以Android为目标的gcc,ld等。

Some people have managed to use normal linux userspace components on rooted devices by putting a whole minimal install of debian-arm or similar in a chroot, but that requires root to set up and would not be linkable from an application process by jni anyway. 有些人通过在chroot中放置一小部分debian-arm或类似的东西来设法在root用户的设备上使用普通的linux用户空间组件,但这需要root用户进行设置,而且jni不能从应用程序进程进行链接。 Your application process is already deeply tied to Android's C library so you can't really substitute another. 您的应用程序流程已经与Android的C库紧密相连,因此您无法真正替代另一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法加载库libopencv_java.so - Could Not Load Library libopencv_java.so 无法加载Android本机库jni_latinime.so - Could not load native library jni_latinime.so Android Android NDK中的FFMPEG-无法加载库“ libavfilter.so” - FFMPEG in Android NDK - could not load library “libavfilter.so” Android Studio NDK:无法加载库“ libgnustl_shared.so” - Android Studio NDK: could not load library “libgnustl_shared.so” libgdal.so android 错误:无法加载库“libgdal.so.1” - libgdal.so android error: could not load library “libgdal.so.1” dlopen失败:无法加载“ libreactnativejni.so”所需的库“ libfb.so”; 找不到由库“ libfb.so”引起的 - dlopen failed: could not load library “libfb.so” needed by “libreactnativejni.so”; caused by library “libfb.so” not found android上的Tcpdump跟踪 - 无法加载“/ system / bin / tcpdump”所需的库“libssl.so” - Tcpdump trace on android - could not load library “libssl.so” needed by “/system/bin/tcpdump” 无法加载libutils.so - Could not load libutils.so Opencv Android:java.lang.UnsatisfiedLinkError:dlopen失败:无法加载库“libopencv_java.so” - Opencv Android: java.lang.UnsatisfiedLinkError: dlopen failed: could not load library “libopencv_java.so” java.lang.UnsatisfiedLinkError:dlopen失败:无法加载“libPrivateSsl.so”所需的库“libcrypto.so.1.0.0”; - java.lang.UnsatisfiedLinkError: dlopen failed: could not load library “libcrypto.so.1.0.0” needed by “libPrivateSsl.so”;
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM