gpt4 book ai didi

Windows 和 Linux 之间的 C++ 可移植性

转载 作者:IT王子 更新时间:2023-10-29 00:59:34 28 4
gpt4 key购买 nike

我有一个关于编写在 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 可以运行一些 native Windows 代码(不需要重新编译任何东西,包括您的原始代码)。但是 Wine 也有局限性。它不是一个完整的 Windows API,库代码运行所需的任何东西都必须在 Wine 上可用,否则它也不会工作。对于许多简单的应用程序来说,这不是主要问题,但是许多较新的 Windows API、旧应用程序的一些用处不大的暗角,特别是任何特定于硬件的应用程序,可能都无法使用.

如果您打算在多个平台上运行,请务必首先确认您打算使用的库也是跨平台的,或者您希望使用的所有操作系统都有合理的等效项。

关于Windows 和 Linux 之间的 C++ 可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261608/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com