1. ホーム
  2. linux

[解決済み] ld は既存のライブラリを見つけることができません

2022-04-21 06:13:26

質問

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 から libmagic.so