Ubuntu では、libtool をインストールできます。 ライブラリを自動的に解決します。
$ sudo apt-get install libtool
これにより、ltdl の問題が解決されました libltdl.so.7 としてインストールされていた私の場合 単純に -lltdl として見つかりませんでした
問題は、リンカが libmagic.so を探していることです libmagic.so.1しかありません
簡単なハックは libmagic.so.1 をシンボリックリンクすることです libmagic.so まで
共有ライブラリをランタイム コンポーネントに分割するのが Debian の慣習です (libmagic1: /usr/lib/libmagic.so.1 → libmagic.so.1.0.0 ) とその開発コンポーネント (libmagic-dev: /usr/lib/libmagic.so → … ).
ライブラリの soname は libmagic.so.1 なので 、これは実行可能ファイルに埋め込まれた文字列であるため、実行可能ファイルの実行時にロードされるファイルです。
ただし、ライブラリは -lmagic と指定されているため、 リンカに対して、libmagic.so を探します 、これが開発に必要な理由です。
これが Linux でどのように機能するかについての詳細は、Diego E. Pettenò:リンカーと名前を参照してください。
つまり、apt-get install libmagic-dev する必要があります。 .これは libmagic.so を与えるだけではありません /usr/include/magic.h のようなコンパイルに必要な他のファイル .
grepsedawk によって定式化されたように、答えは -l にあります。 g++ のオプション 、ld を呼び出しています .このコマンドの man ページを見ると、次のいずれかを行うことができます:
g++ -l:libmagic.so.1 [...]- または:
g++ -lmagic [...]、libs パスに libmagic.so という名前のシンボリック リンクがある場合