私が理解している限り、それらはライブラリですが、2つの違いは何ですか?
.a
ファイルは静的ライブラリですが、.so
ファイルは、WindowsのDLLに類似した共有オブジェクト(動的)ライブラリです。2つのこのページ。
続いて、.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を実行してみます。 (残念ながら、この最後の部分は、より新しいシステムでは機能しないようです。大きな損失ではありません。)