崩溃日志内容:
java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "libxxxx.so" (built with --hash-style=gnu?)
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:989)
崩溃设备信息:
{
"STARTTIME": "1970-01-01 08:00:00",
"CRASHTIME": "2015-08-14 01:47:28",
"DEVICEID": "6aa3a6d0cbcb3251",
"DEVICE": "hlte",
"FINGERPRINT": "samsung/h3gduosctc/hlte:5.0/LRX21V/N9009KEU2GOF1:user/release-keys",
"MODEL": "SM-N9009",
"OSVERSION": "5.0",
"CPU_ABI": "armeabi-v7a",
"IMEI": "A00000443A46BD",
"CPU_ABI2": "armeabi",
……
}
One option is to add "LOCAL_LDFLAGS := -Wl,--hash-style=sysv" at screenrecord Android.mk though I am sure there is a less hacky method of doing so..
总结了一下是需要在Android.mk中添加链接选项:
LOCAL_LDFLAGS := Wl,-hash-style=sysv
libsysv-hash-table-library_ldflags := Wl,-hash-style=sysv
于是在修改前后查看了一下so节的变化:
readelf.exe -dlibxxxx.so
Dynamic section at offset 0xed14 contains 27 entries:
Tag Type Name/Value
0x00000003 (PLTGOT) 0xfee0
0x00000002 (PLTRELSZ) 552 (bytes)
0x00000017 (JMPREL) 0x46fc
0x00000014 (PLTREL) REL
0x00000011 (REL) 0x39c4
0x00000012 (RELSZ) 3384 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffa (RELCOUNT) 420
0x00000006 (SYMTAB) 0x148
0x0000000b (SYMENT) 16 (bytes)
0x00000005 (STRTAB) 0x1918
0x0000000a (STRSZ) 5780 (bytes)
0x00000004 (HASH) 0x2fac
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
0x00000001 (NEEDED) Shared library: [libstdc++.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libc.so]
0x0000000e (SONAME) Library soname: [libbugrpt.so]
0x0000001a (FINI_ARRAY) 0xf590
0x0000001c (FINI_ARRAYSZ) 8 (bytes)
0x00000019 (INIT_ARRAY) 0xf598
0x0000001b (INIT_ARRAYSZ) 16 (bytes)
0x00000010 (SYMBOLIC) 0x0
0x0000001e (FLAGS) SYMBOLIC BIND_NOW
0x6ffffffb (FLAGS_1) Flags: NOW
0x00000000 (NULL) 0x0
readelf.exe -dlibxxxx.so
Dynamic section at offset 0xed14 contains 27 entries:
Tag Type Name/Value
0x00000003 (PLTGOT) 0xfee0
0x00000002 (PLTRELSZ) 552 (bytes)
0x00000017 (JMPREL) 0x46fc
0x00000014 (PLTREL) REL
0x00000011 (REL) 0x39c4
0x00000012 (RELSZ) 3384 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffa (RELCOUNT) 420
0x00000006 (SYMTAB) 0x148
0x0000000b (SYMENT) 16 (bytes)
0x00000005 (STRTAB) 0x1918
0x0000000a (STRSZ) 5780 (bytes)
0x00000004 (HASH) 0x2fac
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
0x00000001 (NEEDED) Shared library: [libstdc++.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libc.so]
0x0000000e (SONAME) Library soname: [libbugrpt.so]
0x0000001a (FINI_ARRAY) 0xf590
0x0000001c (FINI_ARRAYSZ) 8 (bytes)
0x00000019 (INIT_ARRAY) 0xf598
0x0000001b (INIT_ARRAYSZ) 16 (bytes)
0x00000010 (SYMBOLIC) 0x0
0x0000001e (FLAGS) SYMBOLIC BIND_NOW
0x6ffffffb (FLAGS_1) Flags: NOW
0x00000000 (NULL) 0x0
修改前后的节并没有什么变化,然并卵啊!
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
IS_GCC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I../../../src -I../../../src -I../../libs -I/opt/qt-creator-opensource-src-4.4.1/tools -I../../...
Linux nand flash 驱动,下载于https://www.cnblogs.com/linux-rookie/articles/3016990.html
(EE) AIGLX error: dlopen of /usr/lib64/dri/swrast_dri.so failed (/usr/lib64/dri/swrast_dri.so: cannot open shared object file: No such file or directory) (EE) GLX: could not load software renderer The...
看字面是找不到libsqlite.so 因为我用的是融云,其实类似的第三方的IM基本都用这玩意,比如还有个环信,也是 我百度许久后发现是因为7.0为了安全性,禁止访问系统内容,恰巧这货又是系统里的,所以就找不到了,将...
不知道你们是不是有时候也跟我一样,在安装完python某些包的时候,在import的时候总会报错 libc.so.6的版本问题,在网上查找了N种方式,不是没有资源下载就是没用,偶尔也会遇到一些有用的,但是是实在是有点烦。...
本文详细介绍从编译动态库(.so)到程序调用so的整个流程,模拟在加载虹软人脸识别so文件时经常遇到的一些问题,帮助大家了解这些问题出现的原因以及解决方法。 一、 ArcFace库加载常见错误 1.1 找不到动态库 java....
在x86虚拟机中启动带视频的应用时,...Failed to open libwvm.so: dlopen failed: library "libwvm.so" not found 这时候将libwvm.so文件夹一起复制到Android x86的 /system/lib目录下,修改好权限,即可正常播放了。
libEGL.so和libGLESv2.so通过libhgl.so和ibagl.so实现EGL和OpenGL ES。 即,libhgl.so和libagl.so由libEGL.so dlopen()进行。 所有EGL和OpenGL ES调用最终都将调用libhgl.so和/或libagl.so。 libagl.so是纯软件...
关于安卓串口开发,这篇文章写...java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations 这个因为编译的 so 文件太旧了。 示例源码中,修改了上述问题,并提供演示示例,可正常运行。
用法示例LD_PRELOAD='/usr/local/lib/libmemleak.so' ./a.out 可能还需要预加载libbfd和libdl,因此请使用LD_PRELOAD='/usr/local/lib/libmemleak.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu...
opencv官方的本地库,用在windows平台
sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): image not found". See ...
解决 version `GLIBC_2.14' not found 解决方法.具体方法可以参考一下。。
Android 串口驱动,解决csdn上串口资源为html打包的错误so文件。 Android标准串口驱动。
自己动态库映射地址不一样
单片机的中断系统.PPT
官方串口库android-serialport-api在sdk版本大于16时不能用 重新打包,SDK版本23
适用RK3288 android 9.0 SDK, 解决加载 /system/lib/libserial_port.so 时 java.lang.UnsatisfiedLinkError: dlopen failed: library
实例如下: #include #include #include #include <iostream> //编译命令 g++ -m32 EncodeOrDecode.cpp -ldl -o edcode...void *handle = dlopen(./libpub_com_service.so,RTLD_LAZY); if(!handle){ printf(open l
在Android 6.0之前的版本中,文本reloactions问题,会在编译的过程中,作为警告报出来,登录大致如下:ActivityManager:警告:链接程序:libdvm.so具有文本重定位。 这浪费了内存,并且存在安全风险。 >请解决。 ?...