LinuxでLDDコマンドを使用する方法
LinuxでLDDコマンドを使用する方法を疑問に思っていますか?
Linuxは、ニーズに応じてシステムを調整することができるため、十分な柔軟性を提供します。 つまり、端末を介してシステムを簡単に操作できることを意味します。 さらに、さまざまなパラメータを制御し、システム上のさまざまなプログラムで共有および使用されるファイルをチェックすることができます。
一つのコマンドは、特に、検査中の特定のプログラムによって使用されるライブラリを認識することができます。 これはRoland McGrathとUlrich Drepperによって開発されたLDDコマンドです。
LDD(List Dynamic Dependencies)は、さまざまな実行可能ファイル間で共有されているライブラリの依存関係を識別することを容易にします。
このガイドは、LinuxでLDDコマンドを使用する方法を学ぶのに役立ちます。
だから、それ以上の騒ぎなしに、始めましょう!
ライブラリの種類。
ライブラリは、ソースコードを維持することなく、ファイルやプログラムの操作を指示する関数、オブジェクト、変数、クラス、型指定、条件、およびサブルーチン
ライブラリには三つのタイプがあります:
- 動的ライブラリ:これらは、より小さなスケールでコンパイルされたプログラムによって使用されるライブラリです。 名前が示すように、実行時に動的にロードされるため、単一のコピーが複数のプログラムを実行するために動的に使用されます。
これにより、メモリ消費量が削減され、プログラムサイズが最小化され、パフォーマンスが向上します。 彼らは通常、”.so
“拡張子を持っています。
- 静的ライブラリ:これらのライブラリは完全なプログラムで使用されます。 ソースコードを再コンパイルせずにプログラムをリンクし、時間を節約します。 これらのライブラリは、その機能を必要とするプログラムファイルに別々に含まれています。 彼らは通常、”
.a
“拡張子が続きます。 - 共有ライブラリ:個別にインストールされたライブラリで、割賦時にプログラムによって自動的に使用されます。 プログラムが特定のタスクを実行しているときに、既存のライブラリの特定の部分を上書きする可能性があります。 さらに、実行時にコードまたはプログラムで使用することができます。
私たちが日常的に使用するほとんどの実行可能ファイルには共有ライブラリが含まれています。 LDDコマンドは、動的ライブラリの依存関係を一覧表示します。 これらのライブラリは、プログラムの開発を容易にし、コンピュータのメモリ上のサイズと負荷を軽減するために、プログラム間で再利用され、共有
Linuxでは、これらのファイルは”.so
“拡張子の形式であり、/usr/lib*
または単に/lib*
に備蓄されています。
Linuxシステムの様々なディストリビューションは、プログラムのために異なるライブラリのセットをパッケージ化することがあり、オペレーティングシステムの異なるバージョンでは異なる動作をすることがあります。 プログラムの共有ライブラリがシステムで使用できない場合は、次のようなエラーが発生します:
Sudo: error while loading shared libraries: libpthread.so.0:Cannot open shared object file: no such file or directory.
次に、LDDコマンドを使用して、特定のプログラムの共有ライブラリをチェックできます。
LDDコマンドをインストールします。
LDDコマンドは本質的にほぼすべてのLinuxディストリビューションで利用可能です。 そうでない場合は、次のコマンドを使用してインストールできます:
$ sudo apt-get install libc-bin
$ ldd
コマンドの構文は次のとおりです:
$ ldd <options> <executable>
またはより一般的に:
$ ldd -v /path/to/program/executable
LDDは基本的でありながら強力なコマンドです。 それは異なった旗を使用して助けおよび他の変化を提供する。 それらは以下に簡単に説明される。
–version
:現在使用中のlddバージョンを表示します。
-v --verbose
: 情報を複雑に表示する。
-u --unused
: 未使用の依存関係を表示します。
-d --data-relocs
: 行方不明のオブジェクトを再配置して識別する。
-r --function-relocs
: データオブジェクトと関数を再配置し、欠落している関数またはオブジェクトを識別する。
–-help
: コマンドの使用に関するヘルプを提供する。
LDDコマンドを使用します。
インストールが完了したので、LinuxでLDDコマンドを使用する方法を学ぶ準備が整いました。 これを、共有ライブラリの識別にどのように役立つかと一緒に説明します。
Linux上の標準シェルであるBashの共有ライブラリを調べます。 これは、コマンドを実行し、ユーザーとOSの間のインターフェイスを提供するための責任があります。
LDDコマンドを使用するには、次の手順を実行します:
- まず、キーボードのCtrl+Alt+Tを押してコマンドターミナルを開きます。
- 次に、
which
またはwhereis
コマンドの後にLDDコマンドを使用して、次のように入力してパスを見つけます:
$ which bash$ whereis bash$ ldd /usr/bin/bash
ご覧のとおり、共有ライブラリの依存関係が表示されます。 詳細で複雑な概要については、次のように$ ldd
コマンドで-v
フラグを使用します:
$ ldd -v /usr/bin/bash
同様に、-u
フラグを使用して未使用の依存関係を表示できます。
$ ldd -u /usr/bin/bash
上記の場合、未使用の依存関係はありません。 どのライブラリがアイドル状態でメモリを消費しているかを常に確認することをお勧めします。 そうしないと、カーネルに未使用のファイルがロードされ、パフォーマンスが低下する可能性があります。 Ubuntuでスペースを解放する方法についての記事をチェックすると便利です。
データの再配置と関数の再配置には、$ldd
コマンドと一緒に-d
と-r
フラグをそれぞれ使用します。
$ ldd -d /usr/bin/bash$ ldd -r /usr/bin/bash
これらのフラグは、不足しているオブジェクトや関数を識別するのにも役立ちます。
最後に、--help
フラグを使用して、フラグとそれぞれのアクションに関する簡単な相談を行うことができます。
LDDコマンドの制限事項。
LDDコマンドは、動的に実行可能ではないプログラム、”a.out
“共有ライブラリ、またはLDDが出てくる前に古いか開発されたファイルでは動作しません。
最後に、LDDコマンドは、突然のエラーや例外が発生する可能性があるため、信頼されていないソースでは使用しないことをお勧めします。
LDDのマニュアルページには、objdump
とgrep
ユーティリティで構成される代替コマンドが提案されています。
~/$objdump -p /path/program/grep NEEDED
LDDは、正しい方法で使用すると、OSとの相互作用に大きな違いをもたらす可能性がある、損なわれた命令の1つです。 これは、特定の目的を持つ強力なリンクコマンドであり、それは間違いなく提供します。 コマンドとその使用法の詳細については、LDDコマンドのmanページを参照してください。
Leave a Reply