-5

Расширение файла .exe работает на Windows, но не на Linux. Расширение файла DMG работает на Mac OS, но не работает на Windows. какие критерии определяют, будет ли файл работать или нет?

Сейчас Google Fuchsia os находится в стадии разработки.Написано на C, C++, Dart, Go, Rust, Python. Означает ли это, что программы, написанные на C, C++, Dart, Go, Rust, Python, будут работать на Google Fuchsia? или это зависит от другого фактора?

2 ответа2

1

Существует три очень разных типа "исполняемых" файлов:

"Бинарные" файлы

"Двоичный" - это неправильное имя, но чаще всего используется. Обычно они имеют расширение .exe в Windows и, как правило, не имеют расширения в Unix/Linux (но иногда можно увидеть .bin). Эти файлы содержат код, непосредственно исполняемый процессором, будут напрямую использовать службы операционной системы (например, для чтения / записи файлов или отображения объектов пользователю) и должны быть в определенном формате, чтобы операционная система загружала и выполняла их. Поэтому они разные для каждой операционной системы. Они обычно написаны на C или C++. На практике вам не нужно знать ...

"Интерпретированные" файлы

Исполняемые файлы - это просто текстовые файлы (их можно создавать / редактировать с помощью простого текстового редактора). Для выполнения они должны быть загружены и интерпретированы программой, называемой "интерпретатор" (этот интерпретатор попадает в категорию "бинарных" выше). У вас могут быть определенные версии интерпретатора для каждой операционной системы, поэтому вы можете запускать эти файлы в любой операционной системе, для которой существует реализация интерпретатора. Типичные языки: Python (.py), Perl (.pl), JavaScript (.js).

Файлы "байт-код"

Эти файлы находятся где-то между двумя другими. Вместо создания программы для конкретного типа машины или операционной системы, создается "двоичная" программа для некоторой гипотетической "виртуальной машины". Для его выполнения вы используете другую "бинарную" программу, которая имитирует / эмулирует эту виртуальную машину в вашей операционной системе. Код, написанный таким образом, может работать в любой операционной системе, для которой существует реализация виртуальной машины. Типичным языком, использующим это, является Java (.jar).

Хотя "интерпретированные" и "байткодовые" файлы теоретически могут работать везде, чтобы иметь возможность делать это, они должны быть написаны с осторожностью - чтобы не полагаться на какое-либо поведение / функциональность, которая существует только в определенной операционной системе. Не все из них идеально независимы от операционной системы.

-1

расширения не имеют никакого отношения к тому, будет ли приложение работать на определенной ОС.
Например, в Linux все исполняемые файлы находятся в формате ELF «Исполняемый» и «Связываемый».

В Linux вы можете получить тип файла с помощью команды: file NameOfapplication

То, будет ли приложение работать на определенной ОС, связано с языком программирования, на котором оно написано, и скомпилировано ли оно для определенной ОС и поддерживает ли оно библиотеки этой ОС.

Некоторые языки, такие как python и Java, являются кросс-совместимыми, поскольку они не являются языками, которые полностью компилируются, а компилируются в байт-код, который затем выполняется интерпретатором в ОС, в которой установлены их интерпретаторы. Надеюсь, это немного помогает

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .