如何将我的Windows程序编译成单独的Linux二进制文件,并在Wine上运行?

3
今天我安装了wine并检查了我的ubuntu系统, Delphi 3到7都可以完美地运行(Rad studios不能工作,因为它们使用.net scraps)。 但是我制作的所有应用程序都可以完美地工作!!! 我听说它在mac上也可以通过WineBottler很好地工作。
是否可以创建一个头文件linux可执行文件,并将我的vcl应用程序和所需的wine内容放入其中,并以单个可执行文件(.bin)的形式分发?

有时候我认为(可能是错误的)有些事情可能是不可能实现的,因为如果可以轻松地完成的话;Embarcadero几年前就可以做到了。 - VibeeshanRC
1
当你说Delphi 3到7“完美运行”,这是否包括调试器?上次我尝试时,调试器并没有工作。 - dummzeuch
2
我更喜欢使用Delphi的Bordaeux。 - Jeroen Wiert Pluimers
@dummzeuch 你是正确的,调试器没有起作用,但仍然是一个不错的 IDE。 - VibeeshanRC
1
使用CodeTyphon/Lazarus/FreePascal将您的Delphi应用程序转换为本机Linux应用程序,无需Wine。您甚至可以在Windows上开发Linux应用程序,在Linux上开发Windows应用程序。http://www.pilotlogic.com/sitejoom/index.php?option=com_content&view=article&id=96&Itemid=148 - avra
显示剩余2条评论
3个回答

10

Borland曾经为Linux提供了一个名为Kylix的解决方案,它基于一些较旧的Qt源码。但我建议尝试使用FreePascal/Lazarus,这很酷!而且编译器可以编译多个不同平台的代码。


3
我猜这就是 winelib 的用途。但是我从未尝试过。(Kylix Delphi + winelib 是否可以在 Linux 下编译?)

从许可证角度来看,它不兼容。当有人违反GPL条款时,斯托曼会杀死几只小兔子。 - Free Consulting
你可以自由使用GPL许可的产品,直到你进行修改。 - VibeeshanRC
1
@用户,Winelib是根据LGPL许可证授权的,而不是GPL。您可以随意链接它,无需按照相同的许可证发布您的代码。作为开发人员,Vibeeshan,您不仅会使用它,还会分发链接到它的程序,GNU认为这是创建衍生作品。如果库是GPL,则您的代码也必须是GPL。(但Winelib不是GPL。) - Rob Kennedy
2
@Vibeeshan:完全不是这样。允许修改。与非GPL代码链接是不允许的。此外,共享软件计划也是被禁止的。 - Free Consulting
不是这样的。ELF二进制文件必须通过wine-preloader运行。换句话说,这其实并不比在win32二进制文件上使用wine更方便。 - Arnaud Bouchez

2

现在Wine已经非常稳定(一段时间前就达到了1.0版本),因此建议用户使用Linux软件包管理器来安装它,这样可以非常快速和简单。这样,根据所使用的发行版,Wine将始终保持最新状态。

然后使用Wine很容易安装任何Windows程序。

由于Delphi可执行文件大多是自包含的(如果您不使用BDE或某些外部数据库库),因此您的客户将按照“Windows”的方式安装您的Delphi应用程序,即通过在Wine中运行设置程序来安装。

而且,它会正常工作。

使用WineLib并不是一个好主意,甚至不被Wine开发人员建议,据我记得。至少对于闭源软件而言是如此:也许你不会再发布另一个版本的程序,在一两年内,但Wine和WineLib会有很大的发展……如果你使用Wine作为外部包,你的客户可以确信会有一些终端用户增强功能。

如果您的软件纯粹是开源的,那么使用WineLib可能是有意义的。但是,即使是WineLib头文件也可能会发生变化,因此您的源代码不一定能与其同时发展。


上次我尝试使用WINE时,它一次只能安排一个线程,这让我有些失望。 - David Heffernan
@David:Wine处理线程,根据运行的操作系统有两种模式:wine-kthread或wine-pthread。在Linux上使用新的NPTL功能,效果非常好。-请参见http://www.winehq.org/docs/winedev-guide/threading - Arnaud Bouchez
嗯,我只是创建了线程,让它们运行,并期望系统将它们调度到不同的核心上。但所有线程都落在了一个核心上。显然需要做一些额外的工作,但我无法解决它! - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接