Il n’y a pas d’utilitaire ldd sur mon Syno !

L’utilitaire ldd est pratique pour examiner les dépendances d’un exécutable ou d’une bibliothèque. Dans cet article, nous verrons les alternatives, puisqu’il n’existe pas sur les Synology.

On suppose que vous êtes un familier de l’installation de paquets Linux sur votre Synology avec ipkg et que l’accès au Synology via Telnet ou SSH n’a plus de secrets pour vous.

Donc, vous vous êtes lancé dans les grandes manoeuvres en installant et/ou compilant vos outils préférés de monitoring et de développement, mais vous êtes tombés sur un hic. Car à un moment donné on finit toujours par obtenir un message du type « undefined symbol », « undefined reference »…

Le problème est que l’utilitaire ldd n’existe pas sur le Synology. Il y a cependant des alternatives avec les utilitaires objdump et readelf.  Une fois qu’ipkg est installé sur le Synology, lancer la commande :

ipkg install binutils

Voici deux exemples d’utilisation avec chacun des deux outils :

objdump -x xdebug.so |grep NEEDED
NEEDED               libm.so.6
NEEDED               libc.so.6


Avec la commande readelf -d xdebug.so :

Dynamic section at offset 0x4000c contains 26 entries:
Tag        Type                      Name/Value
0x00000001 (NEEDED)             Shared library: [libm.so.6]
0x00000001 (NEEDED)             Shared library: [libc.so.6]
0x0000000e (SONAME)             Library soname: [xdebug.so]
0x0000000c (INIT)               0x5c08
0x0000000d (FINI)               0x392e4
0x00000019 (INIT_ARRAY)         0x40000


Que l’ont peut également filtrer avec readelf -d xdebug.so |grep NEEDED.


BONUS : On peut également se servir de readelf pour vérifier qu’un exécutable ne nécessite aucune dépendance. Par exemple :

DiskStation> readelf -d wiki

Renverra ce message si l’exécutable wiki ne requiert aucune bibliothèque :

There is no dynamic section in this file.

2 réflexions au sujet de « Il n’y a pas d’utilitaire ldd sur mon Syno ! »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *