映射共享库时出错
Error while mapping shared library
我正试图将我的Android应用程序(我通过NDK使用libdash库)调试为本机应用程序,但我遇到了以下错误:
Error while mapping shared library sections:
`/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/libjpeg.so': not in executable format: File format not recognized
warning: Could not load shared library symbols for 92 libraries, e.g. /system/bin/linker.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Unable to find dynamic linker breakpoint function.
GDB will retry eventurally. Meanwhile, it is likely
that GDB is unable to debug shared library initializers
or resolve pending breakpoints after dlopen().
这是我要用的图书馆http://www.bitmovin.net/libdash/
http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
按照以下指示进行操作。你需要把图书馆放在一个特别的地方。
您的问题似乎是为Android进行交叉编译,但尚未设置共享库查找路径。结果是gdb在您的主机系统路径中查找共享库。
您的主机系统是您运行代码构建的系统(可能是您的PC)。你的目标系统是你要在(一些Android设备)上运行结果"可执行文件"的系统。这就是为什么它被称为交叉编译。由于这两个系统不相同,您需要确保使用的是gdb的交叉编译版本(知道您的目标和主机类型的版本),它可能是安卓SDK提供的,您还需要确保为共享库设置搜索路径。
您应该查看通用GDB文档以了解详细信息,但我更喜欢设置交叉编译库路径的方法是设置solib绝对路径。您可以通过在GDB中运行以下程序来做到这一点:
(gdb) set solib-absolute-path <path to root directory all Android shared libraries are under>
这需要你有与你的Android文件系统相同的目录结构,关于你电脑上某个地方的库路径。
另一种更便携的方法是设置solib搜索路径,这样它将在你的电脑上搜索SDK中的Android库位置,而不是你电脑的默认库搜索路径,但要了解详细信息,你必须阅读GDB文档,因为我不经常使用它来提供更多帮助。
相关文章:
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 交叉编译 qt:加载共享库时出错
- 如何与他人共享我的 SFML 游戏而不会出错?
- 加载共享库时出错:JVM.dll
- C++ Linux 加载共享库时出错“未定义的符号:pthread_create”
- 尝试使用共享库部署QT应用程序时出错
- 加载共享库时出错:无法在外部硬件上打开共享对象文件:
- 将共享指针推回矢量时出错
- 编译共享对象时出错:未检测到C++类定义
- 加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录
- 加载共享库时出错:libsystemc-2.3.0.so
- 试图编译使用共享库的C++程序时出错
- 链接到链接到另一个共享库的共享库会在退出时出错
- 编译SFML 2.0项目时加载共享库时出错
- 在64位Ubuntu 12.04上运行aapt:加载共享库时出错:libc++.所以:没有这样的文件或目录
- C/C++ 尝试创建共享库时出错.创建库的静态版本时不会发生错误