我需要为另一个处理器弧重新编译吗?

Do I need to recompile for another processor arc?

我试图以比所有os“编译器(做什么)是什么?”更详细的方式来理解整个“编译”主题。那里的文章。

我的一个大问题是直接编译为机器代码(例如 C)时处理器和 os 平台依赖性。我尝试提出需要解决的具体问题,以使我的画面更清晰:

我在 Linux 发行版上通过 gcc 编译我的 C 代码...:[=​​10=]

所以最后我的问题是:编译是针对特定 OS 平台、处理器平台还是两者?

谢谢!

编译目标、OS 和体系结构。

OS 需要定位,因为:

  • "executable" 文件的格式因操作系统而异。
  • 程序 调用 操作系统,甚至是一些常见的任务,如写入控制台、读取文件或干净地终止(像 POSIX 这样的标准减轻了 OS 通过在程序和 OS).
  • 之间定义一个公共层来依赖

必须针对 CPU 体系结构,因为 CPU 指令是不同的,即使在 "same architecture" 的不同代中也是如此。

  • Can I run the resulting executable on any other Linux Distribution?

一般来说,,但在特定情况下,它可能取决于程序类型(f.i。GUI)和假定在 OS。

  • Is that executable bound the the processor platform compiled on? Do I need to search for another e.g. power-pc gcc when I am running a x86 distro?

我不明白你"search"的意思,但是,是的,你可以交叉编译 来自,比如说,针对 PPC 的 x86。

  • Can I somehow execute this on Windows? I know executables differ but the binary code is the same, isn't it?

这些天 Windows 有 Ubuntu 集成,这允许某种例外,但一般的答案是 ,因为以上.