Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compilation 为什么可以';当一个程序只需要在它要运行的每个平台上编译时,它不是多平台的吗?_Compilation_Cross Platform - Fatal编程技术网

Compilation 为什么可以';当一个程序只需要在它要运行的每个平台上编译时,它不是多平台的吗?

Compilation 为什么可以';当一个程序只需要在它要运行的每个平台上编译时,它不是多平台的吗?,compilation,cross-platform,Compilation,Cross Platform,你可能会发现答案有点明显,其中一部分对我来说也是如此 但我想知道项目的哪些部分的代码通常需要为特定的平台专门设计,是用高级还是低级编程语言编写的 如果这个问题听起来有点模糊,请随意编辑。示例可能是操作系统内核方法,例如从文件/网络/内存读取。例如,在I/O和内存访问方面,Windows提供的功能/权限与Linux不同 此外,代码转换为的机器/汇编代码取决于底层处理器。因此,有时必须重新编译C代码才能在英特尔处理器(如MEC)上的较新版本上运行 另一个原因可能是商业版本。Windows可以通过为M

你可能会发现答案有点明显,其中一部分对我来说也是如此

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


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

示例可能是操作系统内核方法,例如从文件/网络/内存读取。例如,在I/O和内存访问方面,Windows提供的功能/权限与Linux不同

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


另一个原因可能是商业版本。Windows可以通过为MAC创建.NET framework和visual studio,使C#代码在MAC上运行,但他们选择不这样做,因此您不得不在Windows上编写C#代码

这个问题是一般性的,所以我会大致回答

1) 就像前面提到的文章一样,任何与操作系统本质相关的东西都必须是适用于该操作系统的代码

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

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

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

当我打字的时候,我意识到为了公正地回答这个问题,人们可以不停地写。嗯,也许这个问题太笼统了


干杯(当然我漏掉了很多故事)

多平台或跨平台-有什么微妙的区别?我想如果你只需要重新编译一段代码,那么程序就会遇到跨平台的问题,不是吗?我不认为两者之间有什么区别(如果我错了,请纠正我)。虽然它们不能与“平台无关”混淆。这是一个.NET framework的开源实现。我所说的是Microsoft所指的商业方面,而不是这样做的可行性。当然,您可以使用任何编程语言并包装您自己的代码生成器it@mutafabar,引用你的话。。。“从Windosw[sic Microsoft]可以在Mac上运行[sic]C#代码…”。他们没有选择。你就在那里,这是他们的商业权利。但我的观点是,微软不是唯一的游戏。因此,如果微软不给我们想要的,我们可以自己做(开源)。我们同意不要吹毛求疵,好吗?