.aファイルと.soファイルの違いは何ですか?

.aファイルと.soファイルの違いは何ですか?

私が知っている限り、彼らは図書館ですが、2つの違いは何ですか?

答え1

ファイル.aは静的ライブラリですが、.soファイルはWindowsのDLLと同様の共有オブジェクト(動的)ライブラリです。 2つの違いについて詳しく説明します。このページ

答え2

次に、.aファイルは「ar」アーカイブです。 tar アーカイブとは異なり、.o またはオブジェクトファイルを保存してアーカイブから抽出し、プログラムにリンクできます。必要に応じてarを使用して他のファイルを保存できます。

-tパラメーターを使用して、arファイルのメンバーのリストを取得できます。たとえば、次のようになります。

ar -t /usr/lib/libc.a

.soファイルは「共有オブジェクト」ファイルであり、メンバーができるだけ早くローダーに接続できるようにリンカーが使用する追加情報があります。

たとえば、次のことを試してみてください。

objdump -T /lib/libc-2.11.1.so

(またはlibc.soのすべてのバージョンは/ libディレクトリにあります)。

興味深いことに、.soファイルは完全なプログラムかもしれません。たとえば、次のようにします。/lib/libc.so.6。 (これは私のUbuntu 20.04システムで動作します)

関連情報