Je tente de lier une application avec g ++ sur ce système Debian Squeeze. ld se plaint, il ne peut pas trouver les bibliothèques spécifiées. L'exemple spécifique ici est ImageMagick, mais j'ai aussi des problèmes similaires avec quelques autres bibliothèques.ld ne peut pas trouver une bibliothèque existante
J'appelle l'éditeur de liens avec:
g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
ld se plaint:
/usr/bin/ld: cannot find -lmagic
Cependant, existe libmagic:
$ locate libmagic.so
/usr/lib/libmagic.so.1
/usr/lib/libmagic.so.1.0.0
$ ls -all /usr/lib/libmagic.so.1*
lrwxrwxrwx 1 root root 17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0
-rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0
$ ldd /usr/lib/libmagic.so.1.0.0
linux-gate.so.1 => (0xb7f85000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7f51000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7df6000)
/lib/ld-linux.so.2 (0xb7f86000)
$ sudo ldconfig -v | grep "libmagic"
libmagic.so.1 -> libmagic.so.1.0.0
Comment diagnostiquer plus ce problème, et ce pourrait avoir tort? Est-ce que je fais quelque chose de complètement stupide?
qui fonctionne, je suis un peu perplexes qu'il nommerait le fichier d'une manière complètement inutile par défaut - pouvez-vous fournir une idée pourquoi il ferait ceci par défaut? – maxpenguin
Il s'agit probablement d'une mauvaise configuration du script d'installation. – grepsedawk
Le fichier foo.so.1 est également un lien symbolique vers foo.so.1.0.0. De cette façon, vous pouvez avoir plusieurs versions d'une bibliothèque dans votre système, et si une application en a besoin, elle peut créer un lien vers celle-ci, alors qu'en général, la plus récente est choisie par lien symbolique. Je ne sais pas pourquoi ce lien symbolique manquait. – Svante