3
コンパイラは通常、インストールされているプラットフォームの実行可能ファイルのみを生成するのはなぜですか?
私はC ++開発者であり、クロスプラットフォーム開発をよりよく理解するために、コンパイラーの実装の詳細と、コンパイラーがOS固有のバイナリーを正確に作成する方法をよりよく理解しようとしています。私の調査の最中に、少なくともしばらくの間、特定のプラットフォーム用にダウンロードしたほとんどのコンパイラーは、そのプラットフォーム用のバイナリーのみをコンパイルすることに気付きました。したがって、Windows用のコンパイラexeが付属しているIDEをダウンロードした場合、そのコンパイラはx86-x64 Windowsアプリケーション用のプログラムのみをコンパイルでき、LinuxまたはMacアプリケーションはコンパイルできません。 現在、プラットフォームごとに異なるバイナリ形式が必要であることを理解していますが、WindowsのビジュアルC ++コンパイラーがLinuxバイナリ実行可能ファイルを生成するのが難しいのはなぜですか?実行中のCPUのアセンブリ命令とOS固有のライブラリがある限り、任意のマシンの任意のプラットフォーム用の実行可能ファイルをコンパイルできませんか?