我有一个关于编写可在 Windows 和 Linux 之间移植的程序的问题。
最近我意识到,如果你编写一个使用任何类型的外部库的程序,如果该库没有 Linux 版本(或者在 Linux 中开发时没有 Windows 版本),那么你就完蛋了。
那么我的问题是:如果我在linux中编写一个链接到lol.a的程序,然后我想在windows上编译并运行它而不将lol.a重新编译成lol.lib,像MinGW或Cygwin这样的东西可以做到这一点吗?链接到Windows平台上的.a文件以生成Windows可以运行的.exe文件?
您将必须为不同的操作系统重新编译所有库。库的二进制格式因操作系统而异。更重要的是,即使您不使用库,您也需要重新编译,原因很简单,不同的操作系统有不同的系统调用约定。解决这个问题的唯一方法是使用虚拟器。
特别是,CygWin 无法运行 Linux 程序。根本不。 CygWin 仅在您的程序和 Windows 内核之间提供 posix 兼容层。
Linux 上的情况没那么暗淡。 Wine 可以运行一些本机 Windows 代码(无需重新编译任何内容,包括您的原始代码)。但 Wine 也有局限性。它不是一个完整的 Windows API,库代码运行所需的任何内容都必须在 Wine 上可用,否则它也将无法工作。对于许多简单的应用程序来说,这不是一个主要问题,但许多较新的 Windows API、旧 API 的一些阴暗角落没有太多用处,特别是任何特定于硬件的内容,可能将不可用。
如果您打算在多个平台上运行,那么迫切需要首先验证您打算使用的库是否也是跨平台的,或者对于您希望使用的所有操作系统都有合理的等效项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)