「バイナリ」と「実行可能」という用語は、同じものに対して交換可能に使用されているように見えることがよくあります。
まったく同じものを表すのは2つの用語ではありません。端末で実行できるコンパイルプロセス後の実行可能な出力プログラム
これら2つのことは同じであるという私の仮定を強化するのは、bin
フォルダー( "bin"の省略形としての "bin")を、ユーザーが実行できる実行可能ファイルを格納するアプリケーション。
ndisasmのマニュアルに記載されているバイナリファイルと実行可能ファイルの違いは何ですか? の質問と回答を読みましたが、質問とその回答は、Clangとndisasmのそれぞれの環境に重点を置いています。
また、ソフトウェアエンジニアリングフォーラムで質問と回答 https://softwareengineering.stackexchange.com/questions/121224/what-are-binaries を読みましたが、ここでも、実行可能ファイルとバイナリ。一般に「バイナリ」という用語が参照できるのは、次のものだけです。
しかし、Computingでは、Binaryは次を参照します:
- バイナリファイル 、人間が読めるテキスト以外で構成される
- Executable 、コンピューターが実行するマシンコードを含むバイナリファイルのタイプ
- バイナリコード 、テキストとデータのデジタル表現
[ソース: https://softwareengineering.stackexchange.com/a/121235/349225]
ここで、コンパイルプロセスの出力プログラムのコンテキストでは、バイナリは実行可能ファイルと同じように参照されました。
Word binariesは、生成されるファイルのセットとして使用されますコンパイル後本質的に、マシンで実行されるオブジェクトコード。 (Java/.NETの場合は仮想マシン/ランタイム)
[ソース: https://softwareengineering.stackexchange.com/a/121234/349225 ]
それは同じように呼ばれました。
実行可能ファイルは実行可能なファイルです。ファイル自体の名前をコマンドとして書き込むことにより、コマンドラインで実行します。 Unixシステムでは、ファイルの「実行可能」フラグも設定する必要があります。 Windowsでは、ファイルの拡張子は、.exe
を含む実行可能ファイル拡張子の固定セットの1つである必要があります。
バイナリファイル は、単にバイナリ(つまり、非テキスト)形式のファイルです。バイナリ形式とは、プラットフォーム固有の理由(たとえば、改行を\n
から\r\n
に置き換えるなど)のためにファイルの内容を変換しないことを意味します。
バイナリファイルは必ずしも実行可能であるとは限りません。たとえば、.dll
または.so
形式にコンパイルされたライブラリはバイナリですが、実行可能ではありません。 .class
または.jar
形式にコンパイルされたJavaプログラムは実行可能ファイルではありませんが、Java -jar program.jar
コマンドではなく./program.jar
コマンドを使用して実行される可能性があります。
実行可能ファイルは必ずしもバイナリである必要はありません。たとえば、テキスト形式のPythonスクリプトは、Unixシステムで Shebang行#!/usr/bin/python3
を記述し、ファイルの実行可能フラグを設定することで実行可能にすることができます。
ここで「バイナリ」という用語のコンテキストを理解するのに役立ちます。これは、プログラムの(テキストベースの)ソースコードを取得し、そのソースコードをテキストベースではなくバイナリである実行可能な形式に変換するコンパイラーに由来しています。したがって、コンパイラーのコンテキストでは、「テキスト」と「ソースコード」は同等であり、「バイナリ」と「実行可能」も同等です。一方、インタープリターは、ソースコードと実行可能コードを区別しません。
Java JVM、.NetのCLI、またはPythonバイトコードで使用される)などの中間表現により、時間の経過とともに物事は明らかに複雑になります。