【发布时间】:2015-10-20 12:58:47
【问题描述】:
在 Android 6 之前,我们有一个使用 Qt Android 编写的应用程序的工作版本,从 Nexus 设备中的 Android 6 开始,我们看到奇怪的错误
dlopen failed: cannot locate symbol "__cxa_finalize" referenced by "/system/lib/libdl.so"
应用程序崩溃。
objdump -T ourlibrary.so
...
00000000 DF *UND* 00000000 __cxa_finalize
...
使用-lc 标志测试以链接libc.so,没有同样的问题,无法提供帮助。
构建时的其他依赖库:libgnustl_shared.so
为了欺骗编译器,我们添加了
extern "C" int __cxa_finalize(void*); // { empty body somewhere in .cpp file }
没有帮助,有人可以指出问题吗? 注意:这在 Android 6 (Marshmallow) 之前一直有效
UPD1: api版本android-9,架构arm,qt android编译armv5,工具链版本4.9
UPD2:其他一些库正在显示 glibc 版本
00000000 w DF *UND* 00000000 GLIBC_2.2.5 __cxa_finalize
【问题讨论】:
标签: android c++ qt android-ndk cross-compiling