上記のフラグが参照しているライブラリが何であるかを知るにはどうすればよいですか? 他の人のためにどうすればいいですか?
3 に答える
-l オプションはライブラリの名前を引数として取るため、この場合、ライブラリの名前は libXi.a (または libXi.so など) になります。ライブラリを見つけるには、ディストリビューションで利用可能な標準ライブラリの場所 (/usr/lib、/lib、/usr/local/lib など) を探します。リンカーに -L オプションを使用して指定された追加のライブラリ ディレクトリがある場合もあります。
プログラムが正常にコンパイルされた場合、または を使用する別のプログラムがある場合は-lXi
、次のことができます。
ldd /path/to/that/program | grep libXi
例えば:
$ ldd /usr/X11R6/bin/audacity | grep libXi
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f53faaba000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f53f8e2c000)
そして、それはおそらくそのライブラリがどこにあるかを教えてくれます. (ビルド プロセスによって検索パスが変更される可能性があるため、100% ではありませんが、X11 などの標準ライブラリでは通常そうはなりません。 )
そこから、気になる場合は、どのパッケージにそのファイルが含まれているかをディストリビューションに問い合わせることができます。たとえば、Ubuntu または .deb-base ディストリビューションの場合:
$ dpkg --search /usr/lib/libXi.so.6
libxi6: /usr/lib/libXi.so.6
LDD を使用できない場合は/etc/ld.so.conf
、ランタイム共有ライブラリ リンクの検索パスを示すシステムを確認してください。( /lib
/ と/usr/lib
はデフォルトで含まれています。)
最悪の場合、それを見つけることができます:
find / -regex '.*libXi\.\(a\|so\).*' 2> /dev/null