動的リンカー/ローダーライブラリ - ld.soがありません。

動的リンカー/ローダーライブラリ - ld.soがありません。

次のような手動動的リンカー/ローダーライブラリについて説明します。

ld.soプログラムは、以前に使用されたフォーマットであるa.outバイナリを処理します。 ld-linux.so*はELF(libc5の場合は/lib/ld-linux.so.1、/lib/ld-linux.dll)を処理します。 so.2) みんなが何年も使ってきました。

Ubuntu 15.04を使用していますが、何もありませんld.so。私のシステムにはld-2.21.soへのいくつかのシンボリックリンクが含まれています。

/lib/ld-linux.so.2 -> /lib32/ld-linux.so.2
/lib32/ld-linux.so.2 -> ld-2.21.so
/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.21.so

これは、システムがa.outバイナリを処理できないことを意味します(ld.soがマウントされていないため)。また、ld-linux.so.2は、マニュアルに記載されているライブラリではなくシンボリックリンクです。それを説明する方法?

ベストアンサー1

あなたのシステムはそうではないので、/lib/ld.soa.out実行可能ファイルを動的にリンクする機能はありません。カーネルが静的にリンクされたa.out実行可能ファイルをサポートしている場合は、それをマウントできます。 Ubuntuはそうではありません(CONFIG_BINFMT_AOUTカーネル設定オプションが必要です)。 a.out形式はLinuxで約20年間使用されておらず、約15年間使用されていないため、今日のほとんどのシステムではサポートを中止しました。

/lib/ld-linux.so.1/lib/ld-linux.so.2GNU / Linux ELFダイナミックローダーの2つの異なるバージョンがあり、各バージョンには独自のバージョンがあります。ABI。バージョン1(libc5に対応)は、a.outから数年後には廃止され、現在ほとんどのシステムではサポートされていません。現在のバージョン2はGNU libc6に対応しています。

各アーキテクチャには固有の動的ローダ命名規則とバージョン番号があります(プロセッサアーキテクチャによって実際にはABIが異なります)。/lib/ld-linux.so.2x86_32 の名前です。 x86_64では、一般的な場所は/lib64/ld-linux-x86-64.so.2.on armel、場所は/lib/ld-linux.so.3.on armhf/lib/ld-linux-armhf.so.3などです。

/lib/ld-linux.so.2ライブラリです(より正確には動的にリンクされた共有オブジェクトです。動的ローダは通常ライブラリと呼ばれません)。通常のファイルではなく、通常のファイルへのシンボリックリンクであるという事実は、ポイントを変えません。ライブラリにするのは内容です。

おすすめ記事