gpt4 book ai didi

c++ - 如何找到链接到错误版本 Qt 的部分代码?

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:17 26 4
gpt4 key购买 nike

我想在 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 的优势就不是那么多了

关于c++ - 如何找到链接到错误版本 Qt 的部分代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25199445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com