Reputation: 1965
I want to build some project (written in Qt4 but with subsequent changes) in Qt5. Building is successfull, but when I try run output file, it crashes. I think that it is cause by linking libQtCore.so.4 in one place (I saw it by "ldd OutputFile"). My problem is: how can I find that part of code, which refers to Qt4 module? The project is really big and has hundreds of files, debugger didn't help.
Upvotes: 0
Views: 99
Reputation: 8021
Just FYI; in order to quickly check if it was due to indirect dependency through shared libraries (as is commonly the case with a large project,) I would use lddtree
from the pax-utils
package (I use 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...)
The advantage over ldd
is not so much if you have a single binary directly linked to many shared libraries, though
Upvotes: 2