我试图在Windows上编译一个php扩展,遇到了一些麻烦。 然后我认为有可能在Linux上编译Windows,但事实certificate这是不可能的。
有人可以向我解释为什么编译必须在同一个操作系统上完成吗? 我想了解这个主题,具体是因为如果我想分发一些东西,是否意味着我必须在所有这些操作系统(Windows 7,Windows Vista,Windows XP,Linux,Mac等等等)上编译它。 )那么为什么不能在另一个操作系统上编译? 它是内核还是什么?
作为一般规则,编制将在其上执行的实际分配要容易和可靠。 经常有“家庭”的分布,你可以摆脱在家庭中只有一个分配编译。 有时,家庭有诡计,使您能够尽量减less所需的编译数量。
通常可以为所有现代版本的Windows进行单一构build。 如果你想创build一个本地的64位应用程序,你需要第二个版本。 一般来说,您可以在任何版本的Windows上进行构build,但通常最容易使其在您计划支持的最新版本上生成。 (Windows是例外,在其他平台上,使用您计划支持的最旧版本是最简单的方法。)
至lessPentium 3 CPU和2.6.0或更高版本的内核,可以为所有Linux平台构build单一版本。 有一些技巧,但它可以做到。
您可以为所有英特尔Mac构build一个版本。 再次,有一些技巧,但它可以做到。
跨操作系统的交叉编译往往比它的价值更麻烦。 无论如何,您需要本地平台进行testing。 对于大型部署,一个额外的机器build立是没有问题的。 对于小的,使用testing机器build立 – 无论如何你需要它。
主要的例外是无论如何都是用于交叉编译的“小”平台。 例如,小型embedded式系统甚至可能无法在本地平台上进行编译。
交叉编译是可能的 ,但这并不意味着所有的软件都可以交叉编译。 某些软件依赖于仅存在于目标平台上的库/组件。 某些软件依赖于某些版本的开发工具,以便成功构build。