Sie haben recht, ein Programm muss für jede spezifische Architektur und jedes Betriebssystem kompiliert werden. Kompilierte Programme können nicht zwischen Architekturen oder Betriebssystemen übertragen werden.
Fast jeder Computer ist entweder eine 32-Bit-x86-Architektur oder eine 64-Bit-x86_64-Architektur (die mit x86 kompatibel ist). Außerdem sind alle Windows-Versionen nach und einschließlich XP größtenteils kompatibel, da sie alle auf demselben Kernel basieren. Dies ermöglicht, dass ein für x86_64 und Windws kompiliertes Programm auf einer beliebigen 64-Bit-Windows-Maschine ausgeführt wird und ein Programm, das für x86-Fenster kompiliert wurde, um auf praktisch allen Windows-Computern ausgeführt zu werden. Dies setzt natürlich voraus, dass alle richtigen DLLs vorhanden sind.
Gleiches gilt für Linux, da alle Linux-Versionen kompatibel sein sollten.
Beim Installieren eines Spiels werden die Spieldateien und Bibliotheken normalerweise nur in ein bestimmtes Verzeichnis kopiert. Manchmal werden einige Variablen festgelegt, die auch für das Spiel erforderlich sind. Das Installationsprogramm kompiliert die Quelle vor der Installation so gut wie nie, obwohl einige Programme (normalerweise für Linux) so verteilt werden, dass der Benutzer sich vor der Installation selbst kompilieren muss.