Как выглядит исполняемый файл

Обновлено: 03.07.2024

Я не знаю, каково точное расширение исполняемого файла. Это .deb или .tar.gz ?

Не ответ, но я хотел бы добавить, что ВСЕ в LINUX - это ФАЙЛ, поэтому наличие расширений в виде .exe никогда не имеет значения. @tijybba Философия дизайна "все - это файл" совершенно не связана с .exe расширениями, которые не нужны для собственных исполняемых файлов. Первый объясняет содержание /dev ; последнее связано с разрешениями на выполнение и проверкой внутренней части файла, чтобы определить, какой это тип файла. @ Eliah Kagan - Это была просто базовая информация, так как в Windows расширение необходимо для выполнения, ну, в Linux это не так, что касается разрешений для исполняемых файлов , оно требует немного больше ноу-хау о доступе пользователя Sudo и проблем безопасности Underlaid , который, как я догадался, кто-то уточнит в ответе в качестве его последней части, если вообще понадобится, вот почему я разместил его как комментарий, а не как ответ. @tijybba Но «все», будучи файлом, не имеет ничего общего с темой этого вопроса, не так ли? Я полагаю, что я неправильно прочитал эту часть, в которой говорится «что такое exe- файл в Ubuntu?», Я подумал , что это исполняемый файл , но теперь с вашей нетерпеливой помощью кажется, что это означает «что такое exe- файл в Ubuntu?». Если это крайне неуместно, дайте мне знать, что я был бы рад удалить его (ошибки - большой опыт обучения: D).

В Windows нет стандартного File-Extention, подобного файлу ".exe".

В Linux практически любой файл может быть исполняемым. Окончание файла просто описывает (но не обязательно), что или как файл «исполняется».

Например, скрипт оболочки заканчивается на .sh и «выполняется» через оболочку bash.

В своем вопросе вы спрашиваете .deb и .tar.gz. Хорошо. Файл .deb устанавливает программное обеспечение в вашей системе (пожалуйста, будьте осторожны!), А файл .tar.gz представляет собой сжатый файл, такой как .zip, который вы могли бы узнать по Окна.

Файл .deb также больше похож на .zip, чем на .exe. Дело в том, что .deb не выполняется сам по себе , он извлекается, интерпретируется и устанавливается другим приложением. Это другое приложение, обычно являющееся Центром программного обеспечения, который также служит установщиком. Linux меньше зависит от расширений по сравнению с Windows и, следовательно, решает возможность выполнения на основе разрешений, а не расширений.

Я бы суммировал систему следующим образом:

Поэтому, ответьте на свой оригинальный вопрос, расширения нет, или редко, это .elf или .bin .

Это сделано вики-сообществом, поэтому любой может добавить запись.

Я никогда не видел расширение .elf, но видел расширение .bin довольно часто. В то время как другие ответы сосредоточены на том факте, что «любой» файл может быть исполняемым, этот ответ действительно бьет по голове, в то время как высказывание «все» может быть исполняемым, на самом деле не информативно и не правда, а скорее исключительно. Я мог бы переименовать любой файл в Windows в .exe, и он попытается выполнить его, но не обязательно будет работать, в Linux он такой же, если он не предназначен для выполнения, он не будет работать . Моя проблема много раз загружает пакет, и не совсем понимая, с чего начать, но, конечно, rtfm. Вы должны добавить расширение .bin (как Windows, эквивалентное .exe) Это не расширение, но для меня было полезно узнать, что формат "PE" в Windows эквивалентен формату "ELF" в Linux

Концепция исполняемого файла отличается в Unix / Linux от Windows.

Windows

Linux / Unix

Каждый файл имеет исполняемый бит, поэтому любой файл может быть выполнен, в отличие от Windows. Чтобы увидеть, является ли файл исполняемым, вы можете проверить его свойства (вкладка «Разрешения») или даже увидеть их помеченные в терминале (все они отмечены *).

Даже текстовые файлы (например, сценарии оболочки) могут иметь свои исполняемые биты и запускаться как единое целое.

Отдельные исполняемые биты существуют для пользователя, группы и других. Использование этих битов может ограничить, кто может выполнять программу. Существуют дополнительные биты для SUID и SGID, чтобы заставить программу работать от имени пользователя или группы, которой принадлежит файл. Выше приведены некоторые неточности: 2) «у каждого файла есть исполняемый бит»: есть три исполняемых бита (владелец, группа и другие), поэтому один может разрешить выполнение файла самому себе, но не другим. Также есть бит setuid для «execute-as-owner» и setgid «execute-as-group». 2) «любой файл может быть выполнен»: не так. биты разрешения являются обязательным, но недостаточным условием для успешного выполнения файла. Немедленный сбой произойдет, например, если файл на самом деле не может быть загружен и запущен (Ссылка: магические числа файлов man magic , ELF man elf и строка хэш-бэнг man execve )

Чтобы узнать, что операционная система UNIX думает о типе конкретного файла, вы используете команду file:

В приведенном выше примере я указываю путь к программе 'ls', вы должны заменить путь к вашему файлу.

Файл сценария будет выглядеть так:

Случайный текстовый файл:

Он даже достаточно умен, чтобы правильно идентифицировать программу Windows, если у вас есть одна, лежащая на вашем компьютере с UNIX:

И когда он не может понять, что это за файл (но может открыть его), он называет это данными:

Выполнение файла в Linux вообще не связано с именем файла или расширением. Любой файл может быть потенциально выполнен при условии, что он обрабатывается binfmt механизмом ядра (и что для него установлены разрешения на выполнение).

Наиболее распространенным форматом для исполняемого файла является ELF , хотя некоторые ядра могут быть скомпилированы для поддержки старого a.out формата. (Для получения полной технической информации, binfmt_elf.c это где искать.)

binfmt_misc позволяет для регистрации других обработчиков, как описано здесь .

Если вам нравится заниматься программированием ядра, вы даже можете написать свой собственный .

Хотя это и не связано напрямую, file команда должна указать вам, является ли файл исполняемым файлом ELF или чем-то еще.

Другой аспект, который может возникнуть, когда вы хотите «запустить» файл, - это иметь инструмент проводника, который использует расширения регистра, чтобы иметь возможность запустить программу, которая откроет эти файлы. Это то, что произойдет, если вы дважды щелкнете по a .txt , .tar.gz или .deb , например: файлы не являются ни исполняемыми, ни исполняемыми, но то, что вы используете для двойного щелчка, выбирает, какой исполняемый файл нужно открыть, чтобы открыть эти файлы.

@ObsessiveFOSS, но заслуживает ли он снижения? Никто не упомянул моно до моего ответа. Никакой ответ здесь действительно не говорит о том, как на самом деле работают исполняемые файлы Linux (см. Мой комментарий о binfmt в отношении принятого ответа). Я не понизил. Я чувствовал, что голосование должно остаться как есть. @ObsessiveFOSS, нет проблем. Я также заметил, что вопрос был отредактирован с тех пор, как я на него ответил, немного изменив его значение (изначально я понимал его как «У меня есть исполняемый файл, я не могу его запустить . ») и уменьшил свой ответ актуально действительно.

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

Кроме того, у вас есть файлы .tar, обычно известные как сжатые файлы. В версиях Linux, таких как Ubuntu, функции используются в различных дистрибутивах программного обеспечения, причем большая часть исходного кода программного обеспечения доступна в формате tar.gz. Из этого можно предположить, что tar. gz - это форма хорошо известного формата .tar, который используется для архивирования.

В Ubuntu, с другой стороны, формат файла .deb больше похож на файл .exe в windows. Когда вы открываете его, центр программного обеспечения обрабатывает его код и устанавливает содержащуюся в нем программу, такую ​​как исполняемый файл.

Даже если вы по-прежнему можете устанавливать программное обеспечение и пакеты из исходного формата (tar.gz), наиболее подходящим форматом для установки программного обеспечения является .deb. Возьмем, к примеру, Ubuntu Software Center; все приложения, которые он содержит, на самом деле являются файлами .deb. В целом, в linux почти каждый формат файла (включая .deb и tar.gz, а также хорошо известные файлы bash .sh) может вести себя как исполняемый файл, так что вы можете установить пакеты или программное обеспечение с этим.

Я бы лучше сравнил файлы .deb в системах, производных от Debian, с файлами MSI для установщика Microsoft .

В Windows нет эквивалента расширению exe, указывающему на то, что файл является исполняемым. Вместо этого исполняемые файлы могут иметь любое расширение и, как правило, вообще не иметь расширения .

Linux / Unix использует права доступа к файлам , чтобы указать , если файл может быть выполнен. В частности, есть разрешение на выполнение файла, которое сообщает системе, что этот файл разрешено выполнять. Однако отсутствие этого разрешения не означает, что файл не является исполняемым; просто, что соответствующий пользователь не имеет права пытаться выполнить его. Точно так же наличие этого разрешения не всегда указывает на то, что файл является допустимым исполняемым файлом.

Linux / Unix имеет двоичный формат исполняемых файлов, называемый ELF, который эквивалентен двоичным исполняемым форматам PE (Windows) или MZ / NE (DOS), которые обычно имеют расширение .exe.

Тем не менее, другие типы файлов могут быть исполняемыми, в зависимости от оболочки. Как правило, если вы пытаетесь выполнить файл, который система не распознает как двоичный исполняемый файл (например, формат ELF), то он интерпретируется текущим интерпретатором оболочки. Это выполняет тот же эффект, что и пакетные файлы в Windows или DOS, за исключением того, что опять-таки это не расширение, которое определяет его тип или способ его выполнения.

Ух, я тоже почти ответил на это. Посмотрите на дату, этот пост является динозавром.

Файлы EXE и DLL являются переносимыми исполняемыми файлами. Они основаны на Unix-файлах PE / COFF.

В Ubuntu у вас нет определенного расширения для исполняемого файла. Обычно это файлы, которые названы в честь приложения, к которому они относятся.

Важным фактором является то, что в этих файлах установлен исполняемый бит. Если у вас есть цветной терминал, вы заметите, что это другой цвет при использовании ls .

В файловой системе Unix бинарные исполняемые файлы обычно хранятся в собственном месте.

  1. / bin (основные двоичные файлы)
  2. / sbin (системные двоичные файлы)
  3. / usr / bin (двоичные файлы приложения)

тогда как другие ресурсы приложения могут храниться в / usr / lib / или / usr / share /

Файл deb более корректно соответствует файлу msi в windows (то есть установщику пакета).

Исполняемый файл - словосочетание, довольно часто встречающееся, в основном, в документации. В живом общении (в том числе и в виртуальном) для обозначения данного вида файлов пользователи используют менее громоздкие термины, более точно отражающие, что именно они имеют в виду.

Итак, что же скрывается за этим словосочетанием? Исполняемыми файлами называются файлы, содержащие в себе готовые к запуску компьютерные программы. В зависимости от того, в каком виде записана программа в исполняемом файле, выделяют две большие подгруппы файлов данного класса. Первая подгруппа - это бинарные файлы; они содержат в себе запись программы в виде специальных машинных кодов, которые, чаще всего, передаются непосредственно процессору. Такие файлы ещё сокращённо называют бинарниками. В противоположность им существуют исполняемые файлы, в которых программа записана в виде текста - то есть, в том самом виде, в каком с ней работал создавший её программист. Такие исполняемые файлы называют скриптами. Также этот термин нередко употребляют и по отношению к самим программам, которые хранятся в подобных файлах.

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

В Windows наиболее распространены бинарные исполняемые файлы. Самый часто встречающийся их вид - это приложение. Приложения имеют расширения EXE и могут запускаться самостоятельно. Помимо них, существуют динамические библиотеки (их расширение - DLL), которые содержат в себе общие для разных приложений функции. Ещё есть драйверы (DRV или VXD) - специальные программы, нужные для того, чтобы система могла взаимодействовать с конкретными моделями тех или иных устройств. Исполняемые файлы (в Windows особенно) могут зависеть друг от друга: например, для запуска любого приложения нужны определённые системные динамические библиотеки, а им, в свою очередь, нужны драйверы.

Следует заметить, что исполняемые файлы содержат в себе не только непосредственно сами программы, но и разные дополнительные данные. Это могут быть различные графические ресурсы, отображаемые программой, тексты надписей, описания диалоговых окон и т.п. Ярким примером этого могут служить самораспаковывающиеся архивы, которые содержат внутри себя большие объёмы упакованной с целью уменьшения её объёма при передаче или хранении информации.

Исполняемый файл ( executable file ) - это файл , который может быть загружен в память загрузчиком операционной системы и затем исполнен. В операционной системе Windows исполняемые файлы, как правило, имеют расширения ".exe" и ".dll". Расширение ".exe" имеют программы, которые могут быть непосредственно запущены пользователем. Расширение ".dll" имеют так называемые динамически связываемые библиотеки ( dynamic link libraries). Эти библиотеки экспортируют функции, используемые другими программами.

Для того чтобы загрузчик операционной системы мог правильно загрузить исполняемый файл в память , содержимое этого файла должно соответствовать принятому в данной операционной системе формату исполняемых файлов. В разных операционных системах в разное время существовало и до сих пор существует множество различных форматов. В этой главе мы рассмотрим формат Portable Executable (PE). Формат PE - это основной формат для хранения исполняемых файлов в операционной системе Windows . Сборки . NET тоже хранятся в этом формате.

Кроме того, формат PE может использоваться для представления объектных файлов . Объектные файлы служат для организации раздельной компиляции программы. Смысл раздельной компиляции заключается в том, что части программы (модули) компилируются независимо в объектные файлы , которые затем связываются компоновщиком в один исполняемый файл .

А теперь - немного истории. Формат PE был создан разработчиками Windows NT. До этого в операционной системе Windows использовались форматы New Executable (NE) и Linear Executable (LE) для представления исполняемых файлов, а для хранения объектных файлов использовался Object Module Format (OMF). Формат NE предназначался для 16-разрядных приложений Windows , а формат LE, изначально разработанный для OS/2 , был уже 32-разрядным. Возникает вопрос: почему разработчики Windows NT решили отказаться от существующих форматов? Ответ становится очевидным, если обратить внимание на то, что большая часть команды, работавшей над созданием Windows NT, ранее работала в Digital Equipment Corporation. Они занимались в DEC разработкой инструментария для операционной системы VAX / VMS , и у них уже были навыки и готовый код для работы с исполняемыми файлами, представленными в формате Common Object File Format ( COFF ). Соответственно, формат COFF в слегка модифицированном виде был перенесен в Windows NT и получил название PE.

В ". NET Framework Glossary " сказано, что PE - это реализация Microsoft формата COFF . В то же время в [5] утверждается, что PE - это формат исполняемых файлов, а COFF - это формат объектных файлов . Вообще, мы можем наблюдать путаницу в документации Microsoft относительно названия формата. В некоторых местах они называют его COFF , а в некоторых - PE. Правда, можно заметить, что в новых текстах название COFF используется все меньше и меньше. Более того, формат PE постоянно эволюционирует. Например, несколько лет назад в Microsoft отказались от хранения отладочной информации внутри исполняемого файла, и поэтому теперь многие поля в структурах формата COFF просто не используются. Кроме того, формат COFF - 32-разрядный, а последняя редакция формата PE (она называется PE32+) может использоваться на 64-разрядных аппаратных платформах. Поэтому, видимо, дело идет к тому, что название COFF вообще перестанут использовать.

Интересно отметить, что исполняемые файлы в устаревших форматах NE и LE до сих пор поддерживаются Windows . Исполняемые файлы в формате NE можно запускать под управлением NTVDM (NT Virtual DOS Machine), а формат LE используется для виртуальных драйверов устройств ( VxD ).

Почему в названии формата PE присутствует слово " portable " ("переносимый")? Дело в том, что Windows NT была реализована не только для платформы Intel x86 , но и для платформ MIPS R4000, DEC Alpha и PowerPC . И во всех реализациях для хранения исполняемых файлов использовался формат PE. При этом речь не шла о достижении двоичной совместимости между этими платформами, то есть exe- файл , предназначенный для выполнения на платформе Intel x86 , нельзя было запустить на PowerPC . Важно понимать, что переносимость формата еще не означает переносимость исполняемых файлов, записанных в этом формате. Формат PE переносим в том смысле, что он слабо зависит от типа процессора и поэтому подходит для разных платформ (в том числе и для платформы . NET ).

Далее в этой главе мы не будем затрагивать 64-разрядный вариант формата PE, потому что в настоящее время сборки . NET хранятся в прежнем 32-разрядном формате. Однако отметим, что 64-разрядный PE очень слабо отличается от 32-разрядного. Основное отличие касается разрядности полей структур PE-файла.

Исполни́мый (исполня́емый) мо́дуль (также исполнимый файл, англ. executable file ) — это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой.

Чаще всего он содержит двоичное представление машинных инструкций для определённого процессора. (По этой причине на программистском сленге в отношении него используют слово бинарник — кальку с английского binary, но может содержать и инструкции на интерпретируемом языке программирования, для исполнения которых требуется интерпретатор. В отношении последних часто используется термин скрипт.)

Исполнением бинарных файлов занимаются аппаратно- и программно-реализованные машины. К первым относится центральные процессоры, ко вторым — виртуальные машины, например, виртуальная машина Java. Формат бинарного файла определяется архитектурой исполняющей его машины. (Обзор форматов содержится в статье об объектных модулях.) Известны машины, реализованные как аппаратно, так и программно, например, и виртуальная машина VMWare.

Статус исполнимости файла чаще всего определяется принятыми соглашениями. Так, в одних операционных системах исполнимые файлы распознаются благодаря соглашению об именовании файлов (например, путем указания в имени расширения файла — «.exe» или «.bin»), тогда как в других исполнимые файлы обладают специфичными метаданными (например, битом разрешения «execute» в

В современных компьютерных архитектурах исполнимые файлы содержат большие объемы данных, не являющихся компьютерной программой: описание программного окружения, в котором программа может быть выполнена, данные для отладки программы, используемые константы, данные, которые могут потребоваться операционной системе для запуска процесса (например, рекомендуемый размер кучи), и даже описания структур окон графической подсистемы, используемых программой.

Зачастую исполнимые файлы содержат вызовы библиотечных функций, например, вызовы функций операционной системы. Таким образом, наряду с процессорозависимостью (машинозависимым является любой исполнимый файл) исполнимым файлам может быть свойственна зависимость от операционной системы.

См. также

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Исполняемый файл" в других словарях:

файл — поименованная совокупность байтов, записанная на жёстком или гибком магнитном диске, в которой хранится отдельный элемент файловой системы, напр. документ Word или рисунок. Вся информация, записанная на магнитный диск, представлена блоками байтов … Энциклопедия техники

SafeDisk — SafeDisc это система защиты от копирования для Windows приложений и игр, разработанная Macrovision Corporation. Содержание 1 Цели 2 Уязвимости 3 История версий 3.1 SafeDisc (V1) … Википедия

Portable Executable — Переносимый исполняемый файл Расширение .exe, .dll, .ocx, .sys, .scr, .drv, .cpl Сигнатура MZ (опционально), PE Разработан Microsoft Тип формата двоичный, исполняемый, объектный … Википедия

Читайте также: