当程序只需要在每个运行的平台上编译时,为什么程序不能成为多平台?

时间:2013-01-27 09:48:39

标签: compilation cross-platform

你可能会觉得答案有点明显,其中一部分对我也是如此。

但我想知道项目代码的哪些部分通常需要专门为特定平台设计,无论是用高级还是低级编程语言编写的?

如果问题听起来有点模糊,请随时编辑。

2 个答案:

答案 0 :(得分:0)

示例可以是OS内核方法,例如从文件/网络/内存中读取。例如,在I / O和内存访问方面,Windows提供了与Linux不同的功能/特权。

此外,代码转换为的机器/汇编代码取决于底层处理器。因此,有时必须重新编译C代码以在英特尔处理器(如MEC)上的较新版本上运行。

另一个原因可能是商业版。 Windows可以通过为MAC创建.NET框架和可视化工作室来在MAC上运行C#代码,但他们选择不这样做,因此您不得不在Windows上编写C#。

答案 1 :(得分:0)

这个问题很笼统,所以我会回答一般。

1)与前面提到的帖子一样,任何与操作系统本质相关的东西都需要是适用于该操作系统的代码。

2)最低级别的代码是机器语言/或程序集。这种代码不是非常跨平台,因为代码只能在为其编写的机器上正确运行。这是C的一个优点,它被认为是一种低级语言。当然,如果您为特定硬件编写C代码,例如七段LED面板,则只有目标系统中有相应的七段LED面板时,该代码才能在另一个系统上运行。

高级编程语言的优点之一是您通常可以编写跨平台代码,实际上只需要重新编译以便目标系统运行。

然后我们可以谈论解释语言,如Python,Ruby,或Java,Smalltalk等虚拟机。如果目标平台有解释器,如“Python”,只要源代码是valide,它应该在类似的Python解释器上运行(我的意思是类似因为你可能有版本问题,或者你可能有图形插件库或其他库)。

当我输入时,我意识到要做正义的这个问题,人们可以写和写。嗯,也许这个问题太过分了?

CHEERS(当然我已经留下了很多故事)