Где разница между «исполняемыми файлами» и «исполняемыми файлами» в контексте исполняемой программы? - PullRequest
6 голосов
/ 20 января 2020

Я часто вижу термины «двоичный» и «исполняемый», по-видимому, взаимозаменяемые для одной и той же вещи.

Разве это не два термина для описания одной и той же вещи; Выполняемая программа вывода после процесса компиляции, которую я могу запустить на терминале?

Что укрепляет мое предположение, что эти две вещи должны быть одинаковыми, также является обычной практикой предоставлять * Папка 1005 * («bin» как аббревиатура «binaries») внутри установочных папок приложения для хранения исполняемых файлов, в которые могут запускаться пользователи.


Я прочитал вопрос и ответы на вопрос В чем разница между двоичными и исполняемыми файлами, упомянутыми в руководстве ndisasm? , но вопрос и ответ на них более сфокусированы на соответствующих средах Clang и ndisasm.

Iveve также прочитайте вопрос и ответы https://softwareengineering.stackexchange.com/questions/121224/what-are-binaries на форуме Software Engineering, но также здесь нет различий между исполняемым файлом и двоичным файлом; только то, что термин «двоичный» в общем может означать:

Но, в Computing , Binary относится к:

  • Двоичный файл , составленный из чего-то другого, нежели читаемый человеком текст
  • Исполняемый файл , тип двоичного файла, который содержит машинный код для компьютера для выполнения
  • Двоичный код , цифровое представление текста и данных

[Источник: https://softwareengineering.stackexchange.com/a/121235/349225]

где, в В контексте выходной программы процесса компиляции двоичный файл упоминается как исполняемый файл, а также:

Слово binaries используется как набор файлы, которые создаются после компиляции , по сути, объектный код, работающий на машинах. (и виртуальные машины / среды выполнения в случае Java /. NET)

[Источник: https://softwareengineering.stackexchange.com/a/121234/349225]

, где оно было указано то же самое.


  • В чем разница между "исполняемыми файлами" и "исполняемыми файлами" в контексте исполняемой программы?
  • Где это различие?

Ответы [ 2 ]

12 голосов
/ 20 января 2020

Исполняемый файл - это файл, который может быть выполнен; вы бы запустили его в командной строке, написав имя самого файла в качестве команды. В Unix системах также должен быть установлен флаг «исполняемого» файла. На Windows расширение файла должно быть одним из фиксированных наборов расширений исполняемых файлов, включая .exe.

A двоичный файл - это просто один в двоичном файле (т.е. текст) формат. Бинарный формат означает, что содержимое файла не должно быть преобразовано по причинам, определяемым платформой c (например, замена символов новой строки с \n на \r\n).

Двоичные файлы не обязательно выполняются, например библиотека, скомпилированная в форму .dll или .so, является двоичным, но не исполняемым файлом. Программа Java, скомпилированная в форму .class или .jar, не является исполняемым файлом, но ее можно запустить с помощью команды java -jar program.jar, а не ./program.jar.

Исполняемые файлы не обязательно двоичный файл, например, Python сценарий в текстовом виде можно сделать исполняемым на Unix системах, написав строку Шебанга #!/usr/bin/python3 и установив флаг исполняемого файла.

2 голосов
/ 20 января 2020

Это помогает понять контекст термина «двоичный» здесь. Он исходит из компиляторов, которые берут (текстовый) исходный код программы и превращают этот исходный код в исполняемую форму, которая является двоичной, а не текстовой. Таким образом, в контексте компиляторов «текст» и «исходный код» эквивалентны, так же как «двоичный» и «исполняемый». Интерпретаторы, с другой стороны, не делают различий между исходным кодом и исполняемым кодом.

С промежуточными представлениями определенно все усложняется, как, например, в Java JVM, Net. CLI или Python байт-код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...