ファイルシステム階層の標準を理解しようとしています。私はバイナリとライブラリを探して現在理解しています。
バイナリファイルCPUとプロセッサをビットで直接制御するバイナリ形式のコンピュータが読めるコードファイルだ。
図書館PHP用Javascriptでモジュールが必要なときなど、さまざまなプログラムで便利に使用できる機能です。
この理解は正しいですか?それでは、なぜライブラリとバイナリを分離するのですか?いくつかの図書館はいバイナリファイルですか?一部のバイナリ(cat、less、date、rm、cpなど)は、ライブラリと同じように使用および再利用されます...誰かが違いを説明し、これら2つの単語定義のより良いバージョンを見つけるのに役立ちますか?ありがとうございます。
ベストアンサー1
あなたの理解はほとんど正確ですが、考慮すべきいくつかの追加事項があります。
- 「バイナリ」とは、人間が読めないことを意味します。これは一般にマシンコードを参照しますが、他の多くのファイルもこの意味でバイナリであり、ほとんどのマルチメディアフォーマットが良い例です。ただし、FHSはこの用語をより具体的に使用します。
- ライブラリはバイナリコードにすることができます。実際、ほとんどは
/lib
機械語コードでコンパイルされるライブラリです。 - ライブラリからコードを呼び出すなど、同様の機能が
cat
シェルスクリプトで使用されますが、独自に実行できるため、FHS意味のライブラリではありません。
これらの見解から、標準文書を作成しない人の間でより一般的な用語は次のとおりです。
オブジェクトファイル:デフォルトではコンパイルされた機械語コードですが、実行または呼び出しが不可能な場合があります。一般
.o
に、他のカテゴリのいずれかに属さない限り、拡張機能があり、ソフトウェアを構築する場合を除いて、ほとんどのシステムではほとんど見られません。以下の内容を理解する上で重要なので、ここにリストします。実行可能ファイル:このファイルは、主に直接実行できる自己完結型コードで構成されています。カーネルから直接ロードできる特別な形式のオブジェクトファイル(たとえば、、、、、およびすべて
cat
実行bash
可能python
ファイル)、または独自の実行可能ファイルであるいくつかの中間プログラム(Minecraft、、pydoc
およびcowsay
すべて実行可能ファイル)によって解釈される可能性があります。 。例)実行ファイル形式です。最初のタイプの実行可能ファイルにはUNIXシステムではファイル拡張子がほとんどありませんが、2番目のタイプの実行可能ファイルには拡張子がある場合とない場合があります。これがFHSが「バイナリファイル」と呼ばれるものです。別の実行可能ファイルで実行できますが、それを呼び出すには(Cfork()
およびexec()
C ++、Pythonのモジュールの外subprocess
など)、別のプロセスとして実行するために特別な関数を呼び出す必要があります。ライブラリ:このファイルには、他のライブラリまたは実行可能ファイルから呼び出すことができる再利用可能なコードが含まれています。ライブラリがロードされると(コンパイルされたコードについて話すときに「リンク済み」と呼ばれる)、ライブラリのコードは(ほとんど)他のコードによって直接呼び出され、それを呼び出したコードと同じプロセスで実行されます。ライブラリは3つの一般的なタイプに分かれています。
- 静的ライブラリ:元のバージョンです。これは、ライブラリの機能ごとに複数のオブジェクトファイルを1つずつ含むアーカイブファイル(通常はAR形式)で構成されています。オブジェクトファイルはそれを使用する実行可能ファイルにリンクされているため、静的ライブラリのみを使用する実行可能ファイルはデフォルトで他のコードとは100%独立しています。 UNIXシステムでは、通常は
.a
拡張子があります。静的ライブラリの概念は、コンパイルされたプログラミング言語の外には実際には存在しません。 - 動的ライブラリ:今日最も一般的に使用されているライブラリの種類。動的ライブラリは通常
.so
UNIX (Windows の標準) で拡張子を持つ特殊オブジェクトファイルで.dll
、これを使用する実行ファイルによって実行時にロードされます。本番システムで見つけることができるほとんどの項目は/lib
動的ライブラリです。 - モジュール:これは解釈された言語の動的ライブラリと同じです。処理は、ファイルがモジュールで実行可能ファイルである可能性があるコンパイルされた言語とは若干異なります(
http.server
Python標準ライブラリの例を参照)。
- 静的ライブラリ:元のバージョンです。これは、ライブラリの機能ごとに複数のオブジェクトファイルを1つずつ含むアーカイブファイル(通常はAR形式)で構成されています。オブジェクトファイルはそれを使用する実行可能ファイルにリンクされているため、静的ライブラリのみを使用する実行可能ファイルはデフォルトで他のコードとは100%独立しています。 UNIXシステムでは、通常は