Estoy intentando vincular una aplicación con g ++ en este sistema Debian lenny. ld se queja de que no puede encontrar las bibliotecas especificadas. El ejemplo específico aquí es ImageMagick, pero también estoy teniendo problemas similares con algunas otras bibliotecas.ld no se puede encontrar una biblioteca existente
que llamo el enlazador con:
g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
ld se queja:
/usr/bin/ld: cannot find -lmagic
Sin embargo, 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
¿Cómo diagnosticar este problema adicional, y lo podría estar equivocado? ¿Estoy haciendo algo completamente estúpido?
que funciona, yo soy una especie de perplejidad que sería el nombre del archivo de una manera completamente inútil por defecto - puede proporcionar alguna idea por qué lo haría esto por defecto? – maxpenguin
Lo más probable es que se trate de una configuración incorrecta del script de instalación – grepsedawk
El foo.so.1 también es un enlace simbólico a foo.so.1.0.0. De esta manera, puede tener varias versiones de una biblioteca en su sistema, y si una aplicación necesita una específica, puede vincularla, mientras que, en general, la más nueva es elegida por enlace simbólico. No sé por qué falta este enlace simbólico. – Svante