我正在尝试在这个Debian lenny系统上链接一个与g++的应用程序。ld抱怨它找不到指定的库。这里的具体示例是ImageMagick,但我在其他一些库中也遇到了类似的问题。
我使用以下命令调用链接器:
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
如何进一步诊断此问题,以及可能出现的错误?我是不是做了件很愚蠢的事?
发布于 2008-12-03 01:06:18
问题是链接器正在寻找libmagic.so
,而您只有libmagic.so.1
一个简单的方法是将libmagic.so.1
符号链接到libmagic.so
发布于 2012-05-23 17:10:57
在Ubuntu中,你可以安装libtool
,它会自动解析库。
$ sudo apt-get install libtool
这为我解决了ltdl
的一个问题,它是以libltdl.so.7
的形式安装的,在开发过程中并不是简单的作为-lltdl
。
发布于 2016-05-18 04:51:25
如上所述,链接器正在寻找libmagic.so
,但您只有libmagic.so.1
。
要解决此问题,只需执行更新缓存即可。
ldconfig -v
要验证您是否可以运行以下命令:
$ ldconfig -p | grep libmagic
https://stackoverflow.com/questions/335928
复制相似问题