176

この 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

この問題をさらに診断するにはどうすればよいですか? また、何が間違っている可能性がありますか? 私は完全にばかげたことをしていますか?

4

8 に答える 8

178

問題は、リンカが探しているlibmagic.soが、あなたが持っているだけですlibmagic.so.1

簡単なハックは、シンボリックリンクlibmagic.so.1することですlibmagic.so

于 2008-12-03T01:06:18.170 に答える
70

grepsedawk によって定式化されたばかりのように、答えは を呼び出す-lオプションにあります。このコマンドの man ページを見ると、次のいずれかを実行できます。g++ld

  • g++ -l:libmagic.so.1 [...]
  • または: g++ -lmagic [...]、libs パスに libmagic.so という名前のシンボリック リンクがある場合
于 2008-12-03T01:14:07.267 に答える
34
于 2010-10-27T05:17:10.963 に答える
9

Ubuntu ではlibtool、ライブラリを自動的に解決するものをインストールできます。

$ sudo apt-get install libtool

ltdlこれは、インストールされていて、makelibltdl.so.7だけでは見つからなかった問題を解決しました。-lltdl

于 2012-05-23T09:10:56.697 に答える
6

上記のように、リンカは を探してlibmagic.soいますが、 しかありませんlibmagic.so.1

この問題を解決するには、キャッシュを更新するだけです。

ldconfig -v 

実行できることを確認するには:

$ ldconfig -p | grep libmagic
于 2016-05-17T20:51:24.983 に答える
4

私がひどく間違っているlibmagic-lmagic、ImageMagick と同じライブラリでない限り。あなたはImageMagickが欲しいと述べています。

ImageMagick には、コンパイラに適切なすべてのオプションを提供するユーティリティが付属しています。

元:

g++ program.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs` -o "prog"
于 2008-12-03T01:08:20.507 に答える
1

Ubuntu リポジトリから libgl1-mesa-dev をインストールすると、この問題は解決しました。

于 2014-07-01T21:25:31.343 に答える