Я пытаюсь связать приложение с g ++ в этой системе lenny Debian. ld жалуется, что не может найти указанные библиотеки. Конкретный пример здесь - ImageMagick, но у меня есть аналогичные проблемы и с несколькими другими библиотеками.ld не удается найти существующую библиотеку
Я зову линкер с:
g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
л.д. жалуется:
/usr/bin/ld: cannot find -lmagic
Однако 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
Как диагностировать эту проблему дальше, и что может быть неправильно? Я делаю что-то совершенно глупое?
, который работает, я вроде недоумевали, что бы имя файла в совершенно бесполезный путь по умолчанию - вы можете предоставить какие-либо понять, почему это будет делать это по умолчанию? – maxpenguin 2008-12-03 01:09:50
Скорее всего, это неправильная настройка скрипта установки. – grepsedawk 2008-12-03 01:15:38
foo.so.1 также является символической ссылкой на foo.so.1.0.0. Таким образом, у вас может быть несколько версий библиотеки в вашей системе, и если приложение нуждается в определенном, оно может ссылаться на него, в то время как в целом, новый выбирается symlink. Я не знаю, почему эта символическая ссылка отсутствовала. – Svante 2008-12-03 01:19:21