【问题标题】:How binary file can be portable in C programming?二进制文件如何在 C 编程中可移植?
【发布时间】:2014-05-26 20:06:55
【问题描述】:

在阅读了一些 C 编程书籍之后,我想了解一些关于可移植性的知识。 C 代码是可移植的,但必须在每台机器上重新编译,这样编译器才能为处理器生成正确的汇编程序和二进制代码。

然而,当我下载包含一些文件的游戏(便携式游戏)时,.exe 文件无需在我的机器上重新编译即可运行。

那么,怎么会有可移植的.exe呢?

【问题讨论】:

  • 您下载游戏的网站知道您使用的操作系统类型。所以你当然会得到一个可以在你的机器上运行的 EXE。
  • @karim 尝试阅读一些谷歌搜索“可移植可执行文件格式”的文章,例如msdn.microsoft.com/en-us/magazine/cc301805.aspx 它应该会给你答案。您的问题不符合 Stack Overflow 问题格式(请参阅帮助)

标签: c++ c compilation portability


【解决方案1】:

所有 Windows 机器都使用相同的两种架构(x64 或 x86)。

这意味着如果你想在一个不同的架构上运行,比如Linux,你需要重新编译。

【讨论】:

  • 是的,除了 Windows 现在可以在 ARM 上运行,而在 Linux 上必须更频繁地重新编译的原因是每个发行版都不同,足以破坏二进制兼容性。
  • 但我读到每个处理器都有它自己的汇编指令,因此使用带有英特尔处理器的 windows 的计算机如何执行在 amd 处理器中编译的代码
  • x64 和 x86 是 CPU 架构; Linux 在两者上运行。尽管如此,Windows 可执行文件不会直接在 Linux 上运行(除非您使用 Wine 或类似的东西)。
  • @karim:Intel 和 AMD 处理器都具有相同的 x86 指令集(因此可以在每个处理器上执行相同的程序集)。只是它们的硬件实现有所不同。
  • AMD 是一家公司,而不是 CPU 架构。 Intel 和 AMD 都生产兼容的 x86 CPU。英特尔和 AMD 也都生产 x86-64 CPU,它们也能够运行 x86 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 2016-02-25
  • 2016-12-29
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多