.so
ファイルはファイルのようなものだと思いました.o
。また、ファイルは単一の .c ファイルから直接構築されるため、ファイルに複数のファイルのリンクが含まれる.o
理由がわかりません。.so
.c
2 に答える
.so ファイルはライブラリです。これは、一連のコードをまとめてコンパイルおよびリンクした結果です。1 つの .c ファイルまたは複数の .c ファイルから作成できます。それはすべて、コードをどのように編成するかによって異なります。.o ファイルはオブジェクト ファイルです。これは、単一のファイルをコンパイルした結果ですが、リンクはしていません。リンカーが他の .o ファイルと組み合わせて実行可能ファイル (.exe または同等のもの) またはライブラリ (.so、.dll など) にするために使用されます。
.so ファイルは .o ファイルのようなものだと思いました。
いいえ、そうではありません。.o
ファイルはオブジェクト コード.c
(ソース ファイルをコンパイルするとこうなります) ですが、.so
ファイルは動的にリンクされたライブラリです。それらは、相互にリンクされた複数のオブジェクト ファイルからビルドできる可能性があるという点で、実行可能ファイルに似ています。
その理由は、動的ライブラリはオブジェクト ファイルとは異なる目的 (つまり、動的に解決可能な方法で関数やその他のシンボルへのアクセスを提供する) を提供するため、依存関係のない適切な実行可能コードを含める必要があるためです。通常のスタンドアロンの実行可能ファイルと同様です。オブジェクト ファイルには、依存関係が解決されていない、直接実行できないなどのコードが含まれています。依存関係を解決し、最終的なファイルを作成するために、複数のオブジェクト ファイルに対してリンケージが実行されるのはそのためです (スタンドアロンでなくても「実行可能ファイル」と呼ばれます)。実行可能ですが、動的ライブラリ、カーネルモジュールなど)