在 Ubuntu 上编译 C 文件并在 Windows 上使用可执行文件

在 Ubuntu 上编译 C 文件并在 Windows 上使用可执行文件

由于某些奇怪的原因,make在 Windows 上编译时一直出现制表错误,所以我在 Ubuntu 上尝试了一下,结果运行良好。

现在我想使用我在 Ubuntu 上编译获得的可执行文件并在 Windows 上使用它。但是,我在 Windows 上下载时得到的文件类型不同,因为它只是类型file。考虑到它是在 Ubuntu 上编译的,是否可以在 Windows 上运行它?

答案1

Ubuntu 上的标准编译器工具链将生成 Linux 可执行文件,而不是 Windows 可执行文件。可以安装一个可生成 Windows 可执行文件的交叉编译器 - 这Stack Overflow 问题答案给出了一些关于如何安装和运行的提示。

答案2

这就是所谓的交叉编译您需要一个“工具链”(编译器、链接器等)来生成适当的代码和格式,包括:

  • 目标处理器架构。就您而言,可能是相同的(x86 或 amd64),但有时您会针对不同的处理器进行交叉编译,例如当您在 PC 上为 ARM 处理器构建可执行文件时。

  • 目标 ABI(这些是使用的调用约定)。

  • 正确的格式

  • 正确的库,包括系统库。

根据项目的不同,这可能非常容易(只需在某处设置一个标志或环境变量)或非常困难。

你会发现一些提示这里这里或者这里

答案3

使适用于 Linux 的构建脚本通常不适用于 Windows。

您可以尝试在没有 Make 子系统的情况下编译 .c 文件(直接使用 Visual Studio 或其他 C 编译器)

你可以使用赛格威如果应用程序依赖于 POSIX 调用,则编译并运行该应用程序。

您可以尝试找到该应用程序的 Windows 特定的构建脚本:它通常位于不同的文件夹或完全不同的下载中。

相关内容