小编Nas*_*saf的帖子

为什么需要为每个操作系统重新编译 C/C++?

这更像是一个理论问题。我是 Comp sci 专业,对低级编程非常感兴趣。我喜欢了解引擎盖下的工作原理。我的专长是编译器设计。

无论如何,当我正在开发我的第一个编译器时,我遇到了一些令人困惑的事情。

当您用 C/C++ 编写程序时,人们知道的传统事情是,编译器神奇地将您的 C/C++ 代码转换为该机器的本机代码。

但有些事情并没有在这里加起来。如果我针对 x86 架构编译我的 C/C++ 程序,那么相同的程序似乎应该在具有相同架构的任何计算机上运行。但这不会发生。您需要为 OS X 或 Linux 或 Windows 重新编译您的代码。(再次为 32 位与 64 位)

我只是想知道为什么会这样?我们在编译 C/C++ 程序时不是针对 CPU 架构/指令集吗?Mac 操作系统和 Windows 操作系统可以在完全相同的架构上运行。

(我知道 Java 和类似的目标是 VM 或 CLR,所以这些不算数)

如果我对此给出了最佳答案,我会说 C/C++ 必须编译为特定于操作系统的指令。但是我读到的每个来源都说编译器针对机器。所以我很困惑。

c c++ winapi compilation

71
推荐指数
5
解决办法
4415
查看次数

标签 统计

c ×1

c++ ×1

compilation ×1

winapi ×1