lib、lib32、lib64、libx32、libexecの違い

lib、lib32、lib64、libx32、libexecの違い

私の64ビットUbuntu 13.04システムには次のディレクトリがあります/

lib
lib32
lib64
libx32
libexec

ディレクトリには以下/usrが含まれます。

lib
lib32
libx32
libexec

これは検索で簡単に答えることができるようですが、これらのディレクトリが共有ライブラリ(libexecを除く)を保存している以外にオンラインで何も見つかりませんでした。しかし、どの共有ライブラリがどのフォルダにあります(lib32の32ビットとlib64の64ビットを除く)?誰かがこれらすべてのディレクトリの違いを説明できますか?

ベストアンサー1

ああ、はい、長い間Unixを使用してきた場合、これは非常に混乱している可能性があります。ほとんどの Unix は、次の標準を「試みる」。FHS - ファイルシステム階層標準

私は主に私にとって最も身近なRed Hatベースのディストリビューションを使用していることを考えるとFHSについての人々の考えFedora、CentOS、RHEL Linuxディストリビューションで利用可能です。しかし、私はDebianとBSDベースのディストリビューションも試してみましたが、ファイルシステムの保存場所はあまり変わりません。

今、あなたの質問に答えます。見てみましょう。FHSファイル、これらのディレクトリ構造を緩く管理します。一般的に言うと:

目次 -/lib

必要な共有ライブラリとカーネルモジュールが含まれています。

目的:/ libディレクトリには、システムを起動し、ルートファイルシステム、つまり/ binと/ sbinのバイナリを介してコマンドを実行するために必要な共有ライブラリイメージが含まれています。

注1:/ usrにのみ存在するバイナリ(X Windowバイナリなど)に必要な共有ライブラリは、/ libにはありません。 / binと/ sbinでバイナリを実行するために必要な共有ライブラリのみをここに配置できます。

ノート2:/ libの主な目的は、/ binおよび/ sbinディレクトリに配布されたツール用のライブラリを含むことであるため、/ libのライブラリは32ビットまたは64ビットです。

はい(Fedora 14 64ビットシステム)

$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

私の/libのファイルのサンプルは次のとおりです。

./libpam.so.0.82.2:             ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./libplc4.so:                   ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./libidn.so.11.6.1:             ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./upstart/telinit:              ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/runlevel:             ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/shutdown:             ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./upstart/reboot:               ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
./libdb-4.8.so:                 ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
./firmware/mixart/miXart8.elf:  ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, not stripped
./libtinfo.so.5.7:              ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

目次 -/lib<qual>

代替形式デフォルトの共有ライブラリ(オプション)。これは /lib32、/lib64 などのディレクトリになります。

目的:別々のライブラリを必要とする複数のバイナリ形式をサポートするシステムでは、/ libディレクトリに1つ以上のバリエーションがある可能性があります。これは通常、複数のバイナリ形式をサポートしますが、同じ名前のライブラリを必要とするシステムで64ビットまたは32ビットのサポートに使用されます。

メモ:この場合、/ lib32と/ lib64はライブラリディレクトリにすることができ、/ libはそれらの1つへのシンボリックリンクです。

目次 -/usr/lib

プログラミングとパッケージング用のライブラリ。

目的:/usr/libには、ユーザーまたはシェルスクリプトが直接実行できないオブジェクトファイル、ライブラリ、および内部バイナリが含まれています。

注1:さまざまなアーキテクチャに依存しない、アプリケーション固有の静的ファイルとサブディレクトリを/usr/shareに配置する必要があります。

アプリケーションは/usr/libの下の個々のサブディレクトリを使用できます。アプリケーションがサブディレクトリを使用している場合は、そのアプリケーションに関連するすべてのアーキテクチャ依存データをサブディレクトリに配置する必要があります。

ノート2:たとえば、Perl 5 モジュールとライブラリの perl5 サブディレクトリです。

目次 -/usr/lib<qual>

代替フォーマットライブラリ(オプション)。

目的: /usr/lib<qual>代替バイナリ形式では、/usr/libと同じ役割を果たしますが、シンボリックリンク/usr/lib<qual>/sendmailと./usr/lib<qual>/X11

メモ:/usr/lib と /usr/lib/usr/lib<qual>が同じ場合(一方は別のものへのシンボリックリンク)、これらのファイルと各アプリケーションのサブディレクトリが存在します。

長すぎる。

一般的に言うと:

実行可能ファイルに必要なライブラリが/ binまたは/ sbinディレクトリにある場合、これらのライブラリは/ lib *ディレクトリに配置する必要があります。

プログラムとパッケージを使用するためのライブラリがある場合は、/usr/lib/*にあります。特定のライブラリに特定の実行可能ファイルが必要ですが、これらの実行可能ファイルをユーザーまたはルートが直接呼び出すべきではない場合、その実行可能ファイルは/ usr / libexecに移動します。

おすすめ記事