J'essayais de déployer une application Qt/QML pour Linux. Quelque chose d'étrange s'est produit que le système cible se plaignait de symbole non défini dans libQt5Widget.so.5
, alors que j'avais copié toutes les bibliothèques liées à Qt montrées dans ldd -r
résultat de ce fichier, et ldd -r
sur le système cible a déclaré qu'il n'y a pas de bibliothèques "non trouvées". Après un certain temps, j'ai découvert que même ldd -r
dans mon propre système repéré des symboles indéfinis. Lorsque je ldd -r
le même fichier dans le répertoire d'installation Qt, cependant, aucun symbole indéfini n'a été trouvé.Pourquoi ldd produit un résultat différent pour le même fichier dans différents répertoires?
La sortie ressemblait à ceci:
[email protected]:~/deploy/Qt_Libraries$ ldd -r libQt5Widgets.so.5
linux-vdso.so.1 => (0x00007ffd1409a000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007faac833d000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007faac7c97000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007faac7a79000)
(... and much more)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007faac0d13000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007faac0b0d000)
undefined symbol: _ZNK19QAbstractTableModel7siblingEiiRK11QModelIndex (./libQt5Widgets.so.5)
undefined symbol: _ZTI17QPixmapIconEngine (./libQt5Widgets.so.5)
undefined symbol: _ZN17QPixmapIconEngine5paintEP8QPainterRK5QRectN5QIcon4ModeENS5_5StateE (./libQt5Widgets.so.5)
(... and much more)
[email protected]:~/deploy/Qt_Libraries$ ldd -r /opt/Qt/5.5/gcc_64/lib/libQt5Widgets.so.5
linux-vdso.so.1 => (0x00007fff4b5e5000)
libQt5Gui.so.5 => /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5 (0x00007ff5e3978000)
libQt5Core.so.5 => /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5 (0x00007ff5e3233000)
(... and much more)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007ff5dcdad000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff5dcba9000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff5dc9a3000)
J'ai aussi remarqué que le nombre de bibliothèques affichées diffère. Je voudrais savoir ce qui a causé ldd -r
produit un résultat différent pour le même fichier dans différents répertoires. Merci!