Есть ли другие ОС, которые используют PE-файл или хотя бы шанс использовать его в будущем? - PullRequest
2 голосов
/ 23 февраля 2012

Независимо от того, какой компилятор вы используете для компиляции языка .NET, в результате получается управляемый модуль.Управляемый модуль - это стандартный исполняемый файл Windows (PE), для выполнения которого требуется CLR. "В будущем другие операционные системы также могут использовать формат файла PE."в будущем?Кроме .NET какой-либо другой фреймворк (J2EE и т. Д.) Производит PE?Какие аналоги у ПЭ?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Примечания

Если вы действительно хотите узнать, какие другие платформы, кроме Windows, поддерживают .NET / управляемые исполняемые файлы, то ваш вопрос немного широк или немного вводит в заблуждение, когда вы спрашиваете оформат PE.

Формат файла PE - это в основном формат файла.В настоящее время он используется в двух основных целях:

  1. Формат файла, который (собственные) исполняемые файлы используют на 32-битной и 64-битной платформах Windows.
  2. Формат файла, которым управляет .NET) Исполняемые файлы используют.

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

Почему Microsoft выбирает формат файла PE для .NET?Возможно, потому что у них уже была вся инфраструктура (загрузка и т. Д.), И нужно было только что-то использовать для .NET.Например, в .NET (в Windows) нет необходимости использовать какую-либо команду загрузчика для запуска приложения, например java.exe -jar ... или python.exe ..., но можно запускать и запускать ее как собственный исполняемый файл.

Иллюстрированный упрощенно, файл .NET PE содержит только одну ссылку на mscoree.dll, которая затем будет загружать и выполнять содержащийся код MSIL как управляемое приложение.

Использует

ReactOS также должен использовать формат PE (а не только как контейнер для сборки .NET), поскольку предполагается, что он двоично совместим с Microsoft Windows (NT).

Обновление

На самом деле, когда вы Google "pe file format", первая ссылка, которая появляется, это эта статья в Википедии о формате PE ,В нем есть раздел об использовании формата файла, который в основном содержит следующее:

  • ReactOS
  • BeOS R3 и SkyOS (исторически; однако они перешли на ELF)
  • MacOS X 10.5 (но не двоично совместимый с Windows)

Не настоящие операционные системы в истинном смысле, но тем не менее:

  • Mono.Здесь следует отметить одно или два отличия от других вариантов использования
    1. Mono (по умолчанию , в Linux вы можете зарегистрировать его как нестандартный двоичный файл ) требует запуска приложения с использованием mono команда.Таким образом, вы могли бы утверждать, что в данном случае это не та ОС, которая поддерживает формат PE (так же, как она не поддерживает сценарии PHP или что-то еще).Но это спорный и, возможно, несущественный момент.
    2. Он может обрабатывать только PE-файлы "для .NET".
  • Эмуляторы: Wine, HX DOS Extender

Обратите внимание, что OS / 2 (2.x и выше) не использует PE, хотя исторически это, вероятно, могло бы быть (учитывая общую историю NT и NT).Он использует линейный исполняемый файл формата .

1 голос
/ 23 февраля 2012

Microsoft .NET посвящена Windows и не является кроссплатформенной. Mono - это кроссплатформенная реализация стандартов CLR, которая может выполнять исполняемые сборки .NET (в формате PE) в поддерживаемых операционных системах (Windows, OS X и многих других).

Моно-компиляторы (C # / VB.NET) также генерируют сборки в формате PE для совместимости с Microsoft .NET.

PE аналогов слишком много. Java использует JAR. Android использует APK.

...