我们可以编译windows程序的源代码吗?

我们可以编译windows程序的源代码吗?

请原谅我缺乏专业知识,但我想知道是否可以编译开源 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 机器上运行,使用交叉编译器例如明格

相关内容