Android ndk androidndk链接共享库

Android ndk androidndk链接共享库,android-ndk,dynamic-linking,Android Ndk,Dynamic Linking,我目前正在尝试将3个预构建的共享库链接到本机JNI共享库。共享库是在linux上构建的。当我将其中一个库链接到本机JNI时,我得到了一个不满意的链接错误,附在下面 Loading the library normally failed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc.so.6" not found. 我的共享库(libdivsufsort)的运行时依赖项如下所示 Dynamic section a

我目前正在尝试将3个预构建的共享库链接到本机JNI共享库。共享库是在linux上构建的。当我将其中一个库链接到本机JNI时,我得到了一个不满意的链接错误,附在下面

  Loading the library normally failed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc.so.6" not found. 
我的共享库(libdivsufsort)的运行时依赖项如下所示

Dynamic section at offset 0x9e00 contains 25 entries:
Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
0x000000000000000e (SONAME)             Library soname [libdivsufsort.so.3]
0x000000000000000c (INIT)               0x8b8
0x000000000000000d (FINI)               0x85c8
0x0000000000000019 (INIT_ARRAY)         0x209de8
0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
0x000000000000001a (FINI_ARRAY)         0x209df0
0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
0x000000006ffffef5 (GNU_HASH)           0x1f0
0x0000000000000005 (STRTAB)             0x510
0x0000000000000006 (SYMTAB)             0x258
0x000000000000000a (STRSZ)              375 (bytes)
0x000000000000000b (SYMENT)             24 (bytes)
0x0000000000000003 (PLTGOT)             0x20a000
0x0000000000000002 (PLTRELSZ)           216 (bytes)
0x0000000000000014 (PLTREL)             RELA
0x0000000000000017 (JMPREL)             0x7e0
0x0000000000000007 (RELA)               0x708
0x0000000000000008 (RELASZ)             216 (bytes)
0x0000000000000009 (RELAENT)            24 (bytes)
0x000000006ffffffe (VERNEED)            0x6c8
0x000000006fffffff (VERNEEDNUM)         1
0x000000006ffffff0 (VERSYM)             0x688
0x000000006ffffff9 (RELACOUNT)          3
0x0000000000000000 (NULL)               0x0
类似的问题也出现在我的其他库中。该链接在linux上运行良好,因为libc.so.6位于库路径中。
android似乎不支持与版本库的动态链接,也不在system/lib中包含版本库。我如何解决这个问题

您可能会遇到比版本库依赖项更大的问题。如果库是预构建的或是LInux,它需要LInux版本的libc,而LInux版本的libc与Android(又称仿生)版本的libc不兼容。您应该使用Android NDK toolchain重建所有库。您是对的,我尝试在linux上使用NDK构建的共享库,但系统找不到libc.so和libm.so。如果是这种情况,如何在NDK中使用预构建库?因为这些库都应该使用libc.so.6(linux),所以不能在Android上使用这个预构建库。你需要一个Android风格的图书馆是的Alex说了。您必须使用android NDK工具链进行交叉编译。NDK sources/cxx stl中的NDK(最好是llvm)包含您试图编译的特定android体系结构(arm、arm64等)的stl共享库和静态库。