【问题标题】:Compile C program to run everywhere?编译C程序到处运行?
【发布时间】:2014-03-08 16:47:12
【问题描述】:

我了解,当 C 编译器编译代码时,它会将其编译为特定于编译它的处理器的机器代码。例如,是否可以在 Intel 机器上编译我的 C 程序,并让它在 AMD 机器上运行,而无需在配备 AMD 处理器的机器上重新编译它?

【问题讨论】:

  • 你在说什么开发栈?
  • x86 intel 和 x86 amd 在大多数情况下是兼容的。然而,即使在同一制造商的型号之间,支持的指令子集(例如 SSE 或 AVX)、cpu 功能或优化指南之间也存在差异。您应该针对您所针对的所有处理器支持的公共子集进行编译。
  • @ChrisBallard 你所说的开发堆栈是指我在使用什么?我使用的是基于 Intel 的 Mac,但我想为具有不同处理器的机器进行编译。
  • @Jester 有没有好的交叉编译器?
  • @user3318845 GCC 交叉编译器 - cowlark.com/2009-07-04-building-gcc 只需将目标更改为您想要的...(这个有 ARM)

标签: c assembly process intel amd-processor


【解决方案1】:

事实上,常见的 Intel 和 AMD 处理器都是基于 X86 架构的。虽然 C 程序不能编译一次就可以“到处”运行,但 Intel 和 AMD 处理器在这个意义上确实是同一个地方。

例如,您不必担心单个可执行文件(例如游戏安装程序)将无法在您的 Windows 机器上运行,无论其内部是 Intel 还是 AMD。

其他架构(不同指令集)如 Mac/ARM/68k 等您需要担心重新编译

【讨论】:

  • 但是,如果 OP 为 MacOS X/Intel 编译,此可执行文件将无法在 Intel(或 AMD)上的 Windows 下运行。 CPU 不是唯一的变量。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多