Zip*_*per 4 c++ linux windows portability libraries
我有一个关于编写可在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代码(无需重新编译任何内容,包括原始代码).但是葡萄酒也有局限性.它不是一个完整的Windows API,并且必须在Wine上提供库代码运行所需的任何内容,否则它也无法正常工作.对于许多简单的应用程序来说,这不是一个主要问题,但是许多较新的Windows API,旧版本的一些黑暗角落看起来并没有多大用处,特别是任何特定于硬件的东西,可能都不可用.
如果您打算在多个平台上运行,则首先要确认您打算使用的库是否也是跨平台的,或者您希望使用的所有操作系统都有合理的等效项.
| 归档时间: |
|
| 查看次数: |
1579 次 |
| 最近记录: |