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

问题描述 投票:0回答:1

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

对我来说,一个大问题是直接编译机器代码(例如C)时的处理器和os平台依赖性。我试图制定需要解决的具体问题,以使我的图片更清晰:

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

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

所以最后我的问题的目标是:是否针对特定的操作系统平台,处理器平台或两者进行编译?

谢谢!

compilation cross-platform programming-languages bytecode machine-code
1个回答
0
投票

编译目标,OS和架构。

操作系统需要成为目标,因为:

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

必须针对CPU架构,因为CPU指令是不同的,即使在“相同架构”的不同代之间也是如此。

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

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

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

我不明白你的意思是“搜索”,但是,是的,你可以从x86目标PPC进行交叉编译。

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

这些天Windows有Ubuntu集成,并允许某种异常,但一般的答案是否,因为上述。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.