我希望能够分发在我的应用程序中运行的Linux。原因是我需要添加最容易在Linux容器中添加并随应用程序分发的软件功能。任何方式在我的应用程序内运行虚拟机内的Linux?
有没有办法运行一个虚拟机运行在Windows,OSX,Linux下的C/C++应用程序里面?
我希望能够分发在我的应用程序中运行的Linux。原因是我需要添加最容易在Linux容器中添加并随应用程序分发的软件功能。任何方式在我的应用程序内运行虚拟机内的Linux?
有没有办法运行一个虚拟机运行在Windows,OSX,Linux下的C/C++应用程序里面?
两个框架浮现在脑海中:
这些可能都需要一台Linux主机。对于其他主机操作系统,可能需要手动管理虚拟机 - 或使用临时脚本。
QEMU可以运行一个虚拟机,它可以在Windows,Linux和OSX上编译。 http://wiki.qemu.org/Main_Page QEMU可以编译为C++编写的。
所以理论上,QEMU可以嵌入C++程序和用于运行Linux的虚拟机。
运行Linux的小狗http://www.erikveen.dds.nl/qemupuppy/
VirtualBox的一个例子QEMU具有用于创建/运行的VM的API。程序Vagrant使用它为开发人员提供了一种简单的跨平台开发方式。您可以从Windows,Linux或Windows运行vagrant up
,它也执行相同的操作。
你也可以脚本文件,添加端口到你的虚拟机,所以你的C++程序可以说“的VirtualBox,引导我这个图片”,然后只需连接到TCP端口交谈的“Linux的计划”。但调试问题将很困难。
但是,如果你的目标是一个Linux程序出售给非Linux桌面的人,它可能是最适合你和你的理智来硬着头皮将它移植到Windows/Mac的。 (或去Cloud并将其作为服务出售。)
非常奇怪的事情...... cygwin不会够吗? – keltar
关于cygwin,cygwin只是解决了在Windows上安装Unix程序的问题。使用完整的虚拟机,我可以安装任何内容,例如PostgreSQL数据库或其他任何嵌入在应用程序中的内容。一些通常难以嵌入到应用程序中的软件随后可以与应用程序一起移植。然后,我也可以将它分发到任何PC,MAC或PC上。 – Phil
你打算如何在应用程序和主机系统之间进行通信?加上大量的内存使用。加上非常长的启动。如果这是一个选项 - 只需带上任何虚拟机,我就会发现“嵌入”没有意义。 – keltar