web-dev-qa-db-ja.com

ライブラリがインストールされているかどうかを確認する方法

Linuxでは、ライブラリがインストールされているかどうかを確認するにはどうすればよいですか? (もちろんコマンドラインから)。

私の特定のケースでは、libjpegがインストールされているかどうかを確認したいと思います。

172
hasen

これをディストリビューションに依存しない*方法で行うには、次のようにldconfigをgrepで使用できます。

ldconfig -p | grep libjpeg

Libjpegがインストールされていない場合、出力はありません。インストールされている場合は、使用可能な各バージョンの行が表示されます。

Libjpegを任意のライブラリーに置き換えれば、ライブラリーの可用性を確認するための汎用でディストリビューションに依存しない*方法を使用できます。

何らかの理由でldconfigへのパスが設定されていない場合は、フルパス(通常は/sbin/ldconfig

** 99%の時間*

222
faken

ディストリビューションのパッケージマネージャー(aptitude、yumなど)で確認できますが、ディストリビューションを指定しなかったため、適切なコマンドを実行できません。

別の方法として、gcc -ljpegを実行することもできます。「ld:library not found for -ljpeg」が表示された場合、gccがライブラリを検出していないことを意味します(ただし、インストールされていないという意味ではありません)。 「未定義のシンボル: "_main"、参照元:...」のようなものは、libjpegが見つかったことを意味します。

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*は、ライブラリがシステムにインストールされているかどうかを確認する他の方法です

これを確認する方法は他にもたくさんあります。より多くのコンテキスト(libjpegがインストールされているかどうかを確認する必要がある理由)を教えていただければ、特定のケースに最適なソリューションを提供できます。

34
radius

whereisユーティリティを使用します。

サンプル:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
lifchicker

私はこれを使います:

gcc -lpng

Libをインストールすると、次のようになります。

undefined reference to 'main'

Libがnotがインストールされている場合:

cannot find -lpng
12
AndreLDM

Debベースの配布の場合、次のことができます

dpkg -s packagename

または、ファイル名だけがわかっている場合は、

locate filename

ファイル名は通常libsomething.so [.version]です。

9
Kim

Redhatベースのシステムでは、pkg-configを使用して、ライブラリがインストールされているかどうかを確認できます。多くのrpmバイナリは、インストールを続行する前に実際に同じチェックを行うため、その信憑性に合理的に依存できます。

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check
4
Saasira

これは、常にLinuxの構成ツールによって行われます。

これを見てください autoconfとKDevelop に関するチュートリアル。

他のトリックでは、ldconfigdpkgなどのコマンドを使用します。

2
nik

Dpkgを使用して、インストールされているかどうかを確認することもできます。

dpkg --list | grep [some_key_words_of_your_lib]

さらに、CentOSでは、これを試すことができます。

rpm -qa [lib_name]

1
Scott Yang