代码之家  ›  专栏  ›  技术社区  ›  sud03r

将应用程序X移植到平台Y意味着什么?

  •  0
  • sud03r  · 技术社区  · 14 年前

    从标题本身就很清楚了,将应用程序X移植到平台Y意味着什么?

    例如,我在一些操作系统上运行了一个应用程序X,比如说Y,我该怎么把这个应用程序移植到另一个操作系统上呢?
    这是否意味着为操作系统z重写一个新的应用程序A,它必然会模仿操作系统y上应用程序x的行为。

    请解释一下。

    3 回复  |  直到 14 年前
        1
  •  3
  •   pkananen    14 年前

    没有精确的方法可以做到这一点。在某些情况下,需要完全重写。在其他情况下,这可能是为不同的操作系统或处理器编译的问题。它实际上取决于应用程序、源平台和目标平台。不管怎样!

        2
  •  1
  •   AJ.    14 年前

    我同意彼得的观点。

    “移植”,当用非技术类型说时,通常意味着:“我想使用 X 我的 系统-我该怎么做?”这可能与复制相同代码(比如Java或.NET)和运行它(TA DA)一样简单。或者它可能和 X 作为规范的基础和从头开始的重建(根据Peter完全重写)。

    技术用户的“移植”通常指将一个功能部件从一个系统移动到另一个系统。它可以是一个操作系统(OS),一个框架(例如Javato .NET),一个技术(例如Flash到JavaScript + CSS+XHTML)…

    不管怎样,您都需要更多信息来提供建议/解决方案。

        3
  •  1
  •   Aistina    14 年前

    有些程序,你可能只是能够重新编译一个新的平台,没有问题。如果它是一个非常简单的程序,而不是使用任何特定于该操作系统的东西,那么您可能能够摆脱这种情况。基本上,获取源代码,将其移动到另一个操作系统,并在那里使用编译器。即使有特定的代码,您也可以在代码中使用编译时标志或常量,以使编译器以不同的方式操作。我对C++语法很生疏,但我认为这应该说明我的意思:

    #if OS == WINDOWS
    root = "C:\\";
    #elseif OS == LINUX
    root = "/";
    #endif
    

    另一种方法是在虚拟机内运行程序,比如Java。这个虚拟机可以在不同的平台上工作,并且您的可执行文件应该能够无缝地运行在任何使用它的平台上。如果有特定于操作系统的代码,您可能需要进行一些小的更改来重新编译,但是如果您打算从一开始就进行移植,那么您可能不会担心这一点。

    第三种方法是两者的结合,如果我能正确地回忆起,那就是Firefox的作用。大多数代码保持完全相同,但它使用一个基来运行,该基专门为该操作系统编译,定义不同的东西,创建特定类型的变量,例如 nsInt (我看过FF代码已经有一段时间了,所以我可能是错的,但我知道预先准备好了 ns 是他们的惯例)你会用它来代替 int ,因为它将被专门设计成跨平台相同。

    编译时,为基础选择正确的平台,然后使用该平台编译整个程序。