请原谅我缺乏专业知识,但我想知道是否可以编译开源 Windows 程序的源代码并在 Linux(没有 Wine)上使用其可执行文件。就我而言是蚂蚁重命名器,我目前与 Wine 一起使用(我对 Linux 替代品不满意,它缺乏一些高级功能或 GUI)。
答案1
最简洁的答案是不。较长的答案通常不是。这取决于什么图书馆该程序依赖于.
根据编写程序所用的语言,编译器或解释器附带的标准库可能包含或多或少的功能。C,一种无处不在的语言,从某种意义上说,只有极其不寻常的平台才缺少 C 编译器,它的标准库非常小。例如,它有文件 I/O 的概念,但没有目录的概念,并且它的用户界面仅限于标准输入、标准输出和标准错误。其他任何事情都需要对操作系统或使用第三方库做出假设。有些语言选择坚持 C 在其标准库中可以做的事情,这样他们的标准库可以在任何 C 运行的地方运行。
其他编程语言在其标准库中提供了更多功能,并且可能具有至少在 Unix 和 Windows 之间可移植的事实上的标准第三方库。可移植并不是指相同的库代码在两者上运行,而是指有一个 Windows 实现和一个 Unix 实现,并且使用该库的程序不需要关心正在使用哪一个。例如,Python的标准库具有管理文件和目录的界面,并附带一些基本的 GUI 库(不像那些那样漂亮或复杂)能完成,但它们是便携式的并且使用起来相对简单);此外还有一些更高级的可移植第三方库。
Unix 和 Windows 都有许多其他系统上不可用的功能,或者工作方式非常不同。图形用户界面的工作方式非常不同。一些Unix库已经移植到Windows,但是Windows的接口还没有移植到Unix。 Windows GUI代码更多地集成到操作系统中(Unix的GUI从一开始就是在不同层中设计的),并且它是专有代码(来自Unix世界的库大多是开源的),所以它们会非常困难要移植到 Unix:您基本上必须在虚拟机中运行 Windows。 Wine 试图提供Windows 库的独立实现,但这是一项非常困难的工作。
Ant Renamer 是用 Pascal 方言编写的,该工具是为 Windows 开发的,即德尔福。有一个Linux端口在某个时候,但我不知道它有多成功。特别是 GUI 库,必须从 Windows 界面重写为某些 Unix 界面。实际的答案是,如果 Ant Renamer 可以在 Linux 上运行,则需要付出巨大的努力,可能比根据其行为的精确描述从头开始编写它还要多。
对于在搜索中发现此问题但遇到不同问题的人来说,您可以使用 Unix 机器从 Windows 程序编译源代码以在 Windows 机器上运行,使用交叉编译器例如明格。