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

时间:2019-04-19 11:42:53

标签: compilation cross-platform programming-languages bytecode machine-code

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

对我来说,一个大问题是直接编译为机器代码(例如C)时对处理器和操作系统平台的依赖性。我尝试提出一些需要解决的具体问题,以使我的照片更清晰:

我在Linux发行版上通过gcc编译了我的C代码...:

  • 我可以在任何其他Linux发行版上运行生成的可执行文件吗?
  • 该可执行文件是否绑定了在其上编译的处理器平台?我是否需要搜索另一个当我运行x86发行版时,如何使用power-pc gcc?
  • 我可以以某种方式在Windows上执行此操作吗?我知道可执行文件有所不同,但二进制代码相同,不是吗?

最后,我的问题针对:针对特定操作系统平台,处理器平台或两者的编译?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

需要确定操作系统的目标,因为:

  • “可执行文件” 文件的格式在操作系统之间是不同的。
  • 程序调用操作系统,甚至用于诸如写入控制台,从文件读取或干净地终止之类的常见任务(诸如POSIX之类的标准都通过在程序和操作系统之间定义公共层来减轻OS依赖性)。操作系统)。

必须以CPU体系结构为目标,因为即使在不同版本的“相同体系结构” 中,CPU指令也不同。

  
      
  • 我可以在任何其他Linux发行版上运行生成的可执行文件吗?
  •   

通常为,但是在特定情况下,它可能取决于程序的类型(例如GUI)和假定在OS上可用的服务。

  
      
  • 该可执行文件是否绑定了在其上编译的处理器平台?我是否需要搜索另一个当我运行x86发行版时,如何使用power-pc gcc?
  •   

我不明白您所说的“搜索” 是什么意思,但是,,您可以交叉编译,例如x86定位到PPC。

  
      
  • 我可以以某种方式在Windows上执行此操作吗?我知道可执行文件有所不同,但二进制代码是相同的,不是吗?
  •   

如今,Windows具有Ubuntu集成,并且允许某些例外,但由于上述原因,通常的回答是