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 という名前のシンボリック リンクがある場合