我试图在这个Debian lenny系统上链接一个应用程序和g++.ld抱怨找不到指定的库.这里的具体例子是ImageMagick,但我在其他几个库中也遇到了类似的问题.

我通过以下方式给链接器打电话:

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

我如何进一步诊断这个问题,以及可能出现的问题?我做了什么蠢事吗?

推荐答案

问题是链接器想要libmagic.so个,但你只有libmagic.so.1

一个快速的破解方法是将libmagic.so.1符号链接到libmagic.so

Linux相关问答推荐

BASH-SCRIPT-在特定行合并两个文件

一个bash脚本,用于基于2列映射文件替换多个文件名中的模式

为什么我们不能使用${$#}来获取传递给shell 脚本的最后一个参数?

Shell 脚本程序 - 从日志(log)文件中过滤磁盘空间利用率超过 80% 的行

奇怪的 Bash 脚本行为

为什么waitpid(2)可以指定非子进程?

运行系统命令失败,但相同的命令可以直接在 bash 中执行

加载ELF64头文件为什么会导致分段错误?

重新运行时避免 Linux bash 脚本中的文件重命名重复

为什么 perf stat 不计算 cycles:u 在 BIOS 中禁用超线程的 Broadwell CPU 上?

如何更改文件的上次访问/修改/更改日期?

如何在 DolphinDB 中递归查找目录中的所有文件?

访问证书里面的图片

在 Linux 中 Select 多个同名的可执行文件

如何使用 GDB 和 QEMU 调试 Linux 内核?

如何列出附加到Linux中共享内存段的进程?

如何关闭被杀死的程序打开的套接字?

如何更改 tmux 会话的起始目录?

在 Docker 容器中运行的 JVM 的驻留集大小 (RSS) 和 Java 总提交内存 (NMT) 之间的差异

如何限制我网站的 API 用户?