linux - ld 找不到现有的库

我正在尝试在这个 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

我如何进一步诊断这个问题,可能出了什么问题?我在做一些完全愚蠢的事情吗?

最佳答案

问题是链接器正在寻找 libmagic.so 但你只有 libmagic.so.1

快速破解是将 libmagic.so.1 符号链接(symbolic link)到 libmagic.so

https://stackoverflow.com/questions/335928/

相关文章:

python - 类型错误 : method() takes 1 positional argume

linux - 如何将stderr和stdout重定向到脚本同一行中的不同文件?

linux - 查找不属于特定用户的文件

python - 为什么 Pycharm 的检查员提示 "d = {}"?

linux - Linux中的缓冲区和高速缓存有什么区别?

c - 如何将文件指针 ( FILE* fp ) 转换为文件描述符 (int fd)?

python - 如何重命名 conda 环境?

python - 如何获得 Pandas 系列的元素逻辑非?

linux - 如何在 Ubuntu 上设置和运行 PhantomJS?

python - 在 Python 中,如何拆分字符串并保留分隔符?