回答:
次のように、.aファイルは「ar」アーカイブです。tarアーカイブとは異なり、.oまたはオブジェクトファイルを保存します。これらのファイルをアーカイブから引き出したり、プログラムにリンクしたりすることができます。必要に応じて、arを使用して他のファイルを保存できます。
たとえば、-tパラメーターを使用してarファイルのメンバーのリストを取得できます。
ar -t /usr/lib/libc.a
.soファイルは「共有オブジェクト」ファイルであり、リンカがより多くの情報を使用できるため、メンバーをできるだけ早くロードプログラムにリンクできます。
例えば、試してみてください:
objdump -T /lib/libc-2.11.1.so
(または/ libディレクトリにあるlibc.soのバージョン。).soファイルには、他の場所でファイルを検索するか、他の何かを使用するように指示するリンカースクリプトを含めることもできます。
興味深いことに、.soファイルも本格的なプログラムです。たとえば、/ lib/libc.so.6を実行してみます。(悲しいことに、この最後の部分は、より新しいシステムでは動作しないようです。それは大きな損失ではありません。)
ar -t /usr/lib/libc.a
。-
この場合、実際には必要ないようです。また/lib/libc.so.6.
、出力を出力するだけです。私はそれをと呼ぶかどうかわからないfull fledged program
。
ldd
.soで実行することもでき、それが使用する他のライブラリを表示します。Staticは、動的ライブラリではないというメッセージを返します。