
どちらも「リンカー」と呼ばれ、バイナリをリンクするために使用されますが、それぞれの違いがよくわかりません。違いを教えていただけますか?
答え1
あまり技術的に詳しくはありませんが、どちらも「リンカー」、つまりコンパイルされたコードの一部を別のコンパイルされたコードの一部と結合したり、別のコンパイルされたコードにロードしたりするツールです。
ld
は静的リンカーですが、ld.so
は動的リンカーです。
これらの文字so
は、おそらく「共有オブジェクト」の略で、通常は共有ライブラリ、つまりプログラムに動的にリンクされるライブラリ (1 つのライブラリが複数のプログラム間で「共有」される) のファイル名接尾辞として使用されます。対照的に、静的ライブラリのファイル名接尾辞には、ユーティリティ.a
によって作成された「アーカイブ」を表す が付くことがよくあります。ar
静的リンカーは、コンパイル時にプログラムまたはライブラリをリンクします。通常はコンパイルプロセスの最後のステップとして、バイナリ実行ファイルまたはライブラリを作成します。バイナリ実行ファイルの場合、それは静的バイナリであり、全てバイナリ自体にライブラリがロードされる場合もあれば、一部のライブラリのみが静的にリンクされた動的にリンクされたバイナリの場合もあります。
ダイナミック リンカーは、コンパイル時に動的にリンクされたライブラリを実行時にプロセスのアドレス空間にロードします。
システムのおよびのld
マニュアルを参照してください。ld.so