我正在尝试在此Debian lenny系统上使用g ++链接应用程序。 ld抱怨它无法找到指定的库。这里的具体例子是ImageMagick,但我也遇到类似的问题。ld找不到现有的库
我与调用链接:
g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
LD抱怨:
/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的符号链接。这样,系统中可以有多个版本的库,如果应用程序需要特定的版本,则可以链接到它,而通常,最新版本是通过符号链接选择的。我不知道为什么这个符号链接丢失。 – Svante 2008-12-03 01:19:21