交叉编译与虚拟化

时间:2014-07-24 01:03:34

标签: virtual-machine cross-compiling

我想让我的应用程序在Windows和Ubuntu中以32位和64位模式运行。所以我必须编译四次并测试四次。问题是在VirtualBox等虚拟机(VM)中使用交叉编译或编译是否最好。

我知道交叉编译是第一次很难,但是这样我就可以让虚拟机进行测试"清理",没有可能隐藏最终用户PC中缺少文件的开发内容。另一方面,直接在VM中编译非常简单。

所以我问:

  • 每种方法的其他优缺点是什么?
  • 哪种正确方式?
  • 哪种方式最常用?为什么?

1 个答案:

答案 0 :(得分:0)

TL; DR:在这种情况下,请跳过交叉编译。直接在每个目标平台上构建和测试。

详细信息:如果您需要在这4个平台上发布软件,无论您是在目标平台上进行交叉编译还是本机编译,都需要它们的物理或虚拟表现形式。

为什么呢?因为您需要在每个目标平台上运行测试,而不仅仅是一个。

为什么呢?因为您的交叉编译器可能在一个平台上而不是另一个平台上存在错误,并且因为32位与64位以及Linux与Windows之间存在很大差异。例如,如果您只在Ubuntu-32上运行测试,但是交叉编译到Windows-64并运送软件,则只有在到达客户后才会发现问题。

交叉编译很难设置并且难以维护。鉴于您将要在每个平台上测试代码,安装等,您可以跳过交叉编译,直接在每个目标平台上运行构建和测试。 / p>

说到保持VM状态"清洁":不要手动设置它,每次都从头创建它。使用PackerVagrant等工具自动化构建,每次都使用干净的VM,以确保它的可重现性和密封性。