«кроссплатформенность» относится к вещам, работающим на многих разных платформах, так что это может быть ОС или ЦП (тип (x86 / MIPS) или битовый размер (32/64)). Это не подразумевает, что для запуска на других платформах требуется только то, что можно, например, QT может быть нацелен на множество платформ, но ваше приложение может нуждаться в перестройке на каждой, или вы сможете собрать один раз, например, java или .Net
'кросс-компилятор' означает компилятор на этой платформе, который создает программу, которая может работать на другой платформе. Таким образом, сборка исполняемых файлов WinCE на Win32. Или вы можете создать приложение для Linux на оконном блоке, создав версию GCC, которая работает в Windows, но целью выхода является Linux / Elf. Если у вас есть встроенное устройство, вы почти всегда выполняете кросс-компиляцию для создания целевого исполняемого файла.
X86, X64 или любой процессор. Что это значит?
Он контролирует, как приложение .Net нацелено на одну архитектуру или нет, если вы нацелены, то оно не будет работать на обоих, но многие компиляторы делают некоторые оптимизации. Если это не цели (Любой процессор), он будет работать на обоих. Это в основном полезно, если вы напрямую обращаетесь к внешним файлам .dll и жестко связываете 64-битную или 32-битную версию и, следовательно, хотите, чтобы ваше приложение работало только в той же среде.
На фронте установщиков Windows 64bit может запускать 32-битные приложения и 32-битные инсталляторы, где 64-битные приложения не могут работать в 32-битных системах. На других платформах вы обычно перестраиваете код для вашей архитектуры (Linux) или на Mac вы загружаете универсальные исполняемые файлы (которые, я думаю, имеют несколько целевых сборок внутри)