2.2. プログラムが作られる仕組み
人間が判読できるソースコードからマシンコード (コンピューターがプログラムを実行するために従う命令) に変換する方法は、以下のとおりです。
- プログラムがネイティブにコンパイルされる。
- プログラムがマシンコードの解釈により、解釈される。
- プログラムがバイトコンパイルによって解釈される。
2.2.1. ネイティブにコンパイルされたコード
ネイティブにコンパイルされたソフトウェアは、生成されたバイナリーの実行ファイルでマシンコードにコンパイルされるプログラミング言語で書かれたソフトウェアです。このようなソフトウェアは、スタンドアロンで実行できます。
この方法でビルドした RPM パッケージは、アーキテクチャー固有のパッケージです。
64 ビット (x86_64) AMD または Intel のプロセッサーを使用するコンピューターでこのようなソフトウェアをコンパイルすると、32 ビット (x86) AMD または Intel プロセッサーでは実行できません。生成されるパッケージには、名前でアーキテクチャーが指定されています。
2.2.2. 解釈されたコード
bash や Python などの一部のプログラミング言語は、マシンのコードにコンパイルしません。代わりに、プログラムのソースコードは、言語インタープリターまたは言語仮想マシンにより、事前の変換なしで順を追って実行されます。
インタープリター型のプログラミング言語でのみ書かれたソフトウェアは、アーキテクチャーに依存しません。そのため、作成される RPM パッケージの名前には noarch
文字列が付きます。
インタープリター言語は、raw インタープリタープログラム または バイトコンパイル言語 です。この 2 つは、パッケージ化作業のプログラムビルドプロセスにおいて異なります。
2.2.2.1. raw インタープリタープログラム
raw インタープリター言語プログラムはコンパイルする必要はなく、インタープリターにより直接実行されます。
2.2.2.2. バイトコンパイルプログラム
バイトコンパイル言語は、バイトコードにコンパイルして、その言語の仮想マシンにより実行される必要があります。
一部の言語では、raw インタープリターとバイトコンパイルを選ぶことができます。