GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで実行可能ファイルによって使用される共有ライブラリを一覧表示する方法

Linuxオペレーティングシステム環境では、実行するアプリケーション/プログラムに関連付けられているバイナリ実行可能ファイルは、実行時にロードされる共有ライブラリに直接リンクされます。

好奇心旺盛で進化しているLinuxユーザーとして、通常のプログラムの起動時に実行しているバイナリ実行可能ファイルに関連/リンクされているこれらの共有ライブラリについてのアイデアを知りたくなるでしょう。

この記事では、Linuxの実行可能ファイルで使用されるすべての共有ライブラリを見つけるためのいくつかのアプローチについて説明します。

Linuxライブラリの概要

プログラマーまたはプログラミングの世界に精通しているユーザーは、ライブラリを、組織化された方法/形式でまとめられたコンパイル済みのコードピース/セグメントとして定義します。ライブラリのコンパイル済みの性質/属性により、さまざまなプログラム間で柔軟かつ簡単に再利用できます。

Linuxオペレーティングシステムアーキテクチャでは、ライブラリを静的のいずれかに分類できます。 (静的ライブラリ )または共有共有ライブラリ

静的ライブラリは特定のプログラムに静的にバインドされており、プログラムのコンパイル時にのみアクセスできます。共有ライブラリは、プログラムが起動されるとアクティブになり、プログラムの実行時にメモリに常駐します。

Linuxでプログラムの共有ライブラリを見つける方法

ターゲットプログラムに関連付けられている共有ライブラリを決定する前に、まず、プログラムに関連付けられている実行可能ファイルがどこにあるかを知る必要があります。 Linuxでは、プログラムの実行可能ファイルの場所は通常、 / usr / bin内です。 ディレクトリ。

$ ls -l /usr/bin

右端の列には、プログラムの実行可能ファイルの名前がリストされています。

lddコマンドを使用してLinuxプログラムの共有ライブラリを検索する

ldd コマンドは、プログラムの共有ライブラリを指す簡単なシェルスクリプトとして存在します。上記のスクリーンキャプチャのように、たとえば、anydeskアプリケーションに関連付けられた共有ライブラリを出力してみましょう。

次のコマンドを使用して、Anydeskの実行可能ファイルの場所を特定できます:

$ whereis anydesk

lddを介して共有ライブラリを決定する コマンド、実行します:

$ ldd /usr/bin/anydesk 

ご覧のとおり、 anydeskに関連付けられている多数のライブラリのリストがあります。 応用。 lddに注意してください コマンドは、クエリされたプログラムを実行して共有ライブラリ情報を取得する傾向があります。したがって、コマンドを信頼できる実行可能ファイルにのみ関連付けます。

objdumpおよびgrepコマンドを使用してプログラム共有ライブラリを検索する

objdump GNU Binutilsの一部であるコマンド パッケージはオブジェクトファイル情報の表示に焦点を合わせますが、 grep コマンドは、プログラムに関連付けられた共有ライブラリを一覧表示します。

これらのコマンドがwhoisのようなプログラムで何をもたらすか見てみましょう ドメイン名情報に使用されます。

$ whereis whois 

次に、プログラムの共有ライブラリを見つけます。

$ objdump -p /usr/bin/whois | grep 'NEEDED'

ご覧のとおり、 whois ドメインルックアッププログラムの実行可能ファイルは、2つの共有ライブラリに関連付けられています。

または、 readelfを使用することもできます zipプログラムの実行可能ファイルの共有情報を取得するコマンド。

$ whereis zip
$ readelf --dynamic /usr/bin/zip | grep NEEDED

出力に従って、 zip プログラム実行可能ファイルは、2つの共有ライブラリに関連付けられています。

Awkコマンドを使用して共有ライブラリを検索する

このオプションは、すでに実行されているプログラムに最適です。まず、 PIDを取得する必要があります (プロセスID )。たとえば、フレームショットがあるとします。 スクリーンキャプチャユーティリティが実行されています。

PIDを取得するには 、実行します:

$ pgrep flameshot 

45261

/ proc / / maps ファイルは/proc / 45261 / mapsに変換されます 。これで、このファイルを awkと組み合わせることができます フレームショットを取得するコマンド 以下に示すように、実行可能な共有ライブラリ。

$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Linuxのプログラム実行可能ファイルに関連付けられているすべての共有ライブラリの一覧表示に精通しています。


Linux
  1. Linuxでサービスを管理および一覧表示する方法

  2. Linux で実行可能ファイルが使用するすべての共有ライブラリを表示するには?

  3. Linuxで共有メモリセグメントに接続されているプロセスを一覧表示する方法は?

  1. Linux 共有ライブラリの紹介 (共有ライブラリの作成方法)

  2. Linux で共有ライブラリを初期化する方法

  3. Linux 共有ライブラリのストリッピング

  1. LinuxSSコマンドの使用方法

  2. Linuxで実行中のプロセスを一覧表示する方法

  3. Linuxでユーザーを一覧表示する方法