如何找到部分代码链接到坏的Qt版本
How find part of code linking to bad version of Qt?
我想在Qt5中构建一些项目(在Qt4中编写但随后进行更改)。构建是成功的,但是当我尝试运行输出文件时,它崩溃了。我认为这是由于链接libQtCore.so。4在一个地方(我通过"ldd OutputFile"看到它)。我的问题是:我怎么能找到那部分代码,这是指Qt4模块?这个项目非常大,有数百个文件,调试器帮不上忙。
仅供参考;为了快速检查它是否由于共享库的间接依赖(这是大型项目的常见情况),我将使用pax-utils
包中的lddtree
(我使用Ubuntu 12.04)
$ lddtree `which evince`
evince => /usr/bin/evince (interpreter => /lib64/ld-linux-x86-64.so.2)
libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1
ld-linux.so.2 => /lib/i386-linux-gnu/ld-linux.so.2
libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6
libevdocument3.so.4 => /usr/lib/libevdocument3.so.4
libgmodule-2.0.so.0 => /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2
libz.so.1 => /lib/i386-linux-gnu/libz.so.1
libevview3.so.3 => /usr/lib/libevview3.so.3
libgailutil-3.so.0 => /usr/lib/x86_64-linux-gnu/libgailutil-3.so.0
libgrip.so.0 => /usr/lib/libgrip.so.0
libgeis.so.1 => /usr/lib/x86_64-linux-gnu/libgeis.so.1
libgrail.so.5 => /usr/lib/x86_64-linux-gnu/libgrail.so.5
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1
libframe.so.6 => /usr/lib/x86_64-linux-gnu/libframe.so.6
(snip; too long...)
与ldd
相比,如果您有一个直接链接到许多共享库的二进制文件,那么
相关文章:
- Qt creator 4.11,在应用程序输出面板中创建一个链接
- Libharu 解释 QT c++ 中的链接
- Qt5 C++将新窗口与Qt设计器链接
- 确定Qt库链接
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 在Qt中链接具有非标准名称的lib文件
- CMake Qt建立在Windows链接器问题之上
- libGL确实存在,但链接器找不到它 - Qt 4.8.7,CentOS 7.5
- 静态链接MSVC库,动态链接Qt
- 将Qt应用程序与CMake和Visual Studio链接起来
- 静态Qt链接版本,Qt 5.2,QT中的未知模块:快速qml
- Qt链接问题
- CGAL Qt 链接器错误
- qt链接器错误,从另一个线程发出信号
- 将类添加到基本Qt GUI应用程序时出现Qt链接器错误
- Ubuntu Qt链接提升日志
- MyClass::元对象VS2005的Qt链接问题
- Qt链接器错误窗口
- Qt:链接我的模型数据与QListView
- Q_OBJECT相关的qt链接错误