我对QT5和安卓系统有意见。我正在尝试使用交叉构建的库紫色(感谢GoogleSummerOfCode),但它没有将其打包到apk和Java抛出中
E/AndroidRuntime( 1496): java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1937]: 1725 could not load needed library 'libpurple.so.20' for 'libSimpleChat.so' (load_library[1092]: Library 'libpurple.so.20' not found)libpurple.so.20是一个指向libpurple.so.20.0的符号链接,重命名不会改变任何东西,如果我将此链接复制到android lib文件夹中,它将被忽略(仅打包.so库)。即使我将其重命名为libpurple.so,它也无法工作,因为libpurple.so.20似乎是以二进制形式硬编码的。
发布于 2013-10-09 16:22:01
我也有类似的问题,通过使用非版本化的soname重新编译共享库解决了这个问题。
检查共享库的soname:
$objdump -x libpurple.so | g 'SONAME'您应该会看到类似这样的内容:
SONAME libpurple.so.20重新构建库并指定一个非版本化的soname:
arm-linux-androideabi-gcc -shared -fPIC .... \
-Wl,-soname,libpurple.so -o libpurple.so现在,共享库应该有一个非版本化的soname。
$objdump -x libpurple.so | g 'SONAME'
SONAME libpurple.so当您将此共享库与您自己的库链接时,它将使用非版本化的库名称。
$objdump -x libSimpleChat.so | g 'NEED'
NEEDED libpurple.sohttps://stackoverflow.com/questions/18013220
复制相似问题