Проблемы межплатформенной совместимости

Среда QNX может выступать как в роли кросс-платформенной среды разработки, так и в качестве межплатформенного сервера. Например, Вы можете, работая на компьютере с архитектурой x86, сгенерировать код для машины с архитектурой PowerPC. Вы можете на компьютер x86 установить программное обеспечение, скомпилированное для компьютера PowerPC. Более того, компьютер Power PC может загрузиться и получить доступ к своему программному обеспечению, размещенному на сервере x86 — без проблем.

Чтобы обеспечить такие возможности, необходимо обеспечить представления о различиях в программном обеспечении. Например, имеет смысл отделить бинарные файлы PowerPC от бинарных файлов x86, но как быть с компилятором для PowerPC, работающем на машине x86 и файлами, необходимыми для обеспечения генерации кода для PowerPC ? Ситуация разрешается следующим образом: мы говорим, что компилятор предназначен для инструментальной машины (host) x86, а создаваемый им код предназначен для целевой машины (target) PowerPC.

Вот краткое резюме для терминологии, которая используется, если мы говорим о кросс-платформенных пакетах:

Common packages (Общие пакеты) — содержат платформенно-независимые файлы. Например текстовые файлы.

Core host packages (Платформенно-зависимые инструментальные пакеты) — содержат бинарные файлы и файлы, содержимое которых ориентировано на конкретный тип процессора. Например, утилиты, такие как emacs и cat.

Common target packages — contain files related to building code for a specific processor, but that can be used on any processor. For example, header files or documentation specific to targeted development tools.

Common target packages (Общие целевые пакеты) — содержат файлы, используемые при формировании кода для определенного типа целевой платформы, предназначенные для инструментальной машины с любым типом процессора. Например, это могут быть заголовочные файлы или документация, описывающая особенности использования инструментальных средств разработки для целевой платформы.

Core target packages (Платформенно-зависимые целевые пакеты) — содержат бинарные файлы и файлы, содержимое которых ориентировано на конкретный тип процессора. Эти файлы могут использоваться только для этого, конкретного, типа процессора.

Используя данные соглашения, мы можем, например, размещать emacs для платформ PowerPC, x86 и MIPS на одном сервере, исключая какие-либо конфликты обслуживания. Кроме того, мы высвобождаем дисковое пространство, объединяя платформенно-независимые файлы в отдельный пакет, содержимое которого просто логически связано с платформенно-зависимыми пакетами.