【问题标题】:Is it possible to compile Windows binaries on a Linux machine?是否可以在 Linux 机器上编译 Windows 二进制文件?
【发布时间】:2010-12-03 18:05:27
【问题描述】:

在我的工作中,所有项目数据都驻留在一个 NFS 上,可以从 Linux 和 Windows 机器(使用 Samba)访问。所有工作都是在 Linux 上完成的,但我正在考虑为 Windows 编译一些工具,以便可以使用 Visual Studio 进行调试。

我已经有了一个不错的 makefile,它可以使用不同的目标为 32 位或 64 位 Linux 构建代码。假设我在 NFS 的某个地方有所有外部库的 Windows 版本,并且假设代码足够干净,可以在 Windows 下编译,是否可以在 Linux 上使用现有的 makefile 编译和链接我的 Windows 程序?理想情况下,我想调用一次 makefile 并让它构建所有三个 32 位 Linux、64 位 Linux 和 Windows。

另一个优点是可以选择使用任何 Visual Studio 元数据对其进行编译,以便于调试。

【问题讨论】:

  • 您要的是“cross-compiler”。
  • 二进制是预编译源,可以编译

标签: windows linux cross-platform compilation


【解决方案1】:

是的,例如,您可以使用MinGW 实现这一目标。

但是,您可能需要在 makefile 中调整一两个选项。

【讨论】:

  • MinGW 在 Windows 上运行,而不是 Linux。但它至少会使用 Linux 用户熟悉的 GNU 工具构建原生 Windows 应用程序。但请注意,MinGW 使用 Microsoft 的 MSVCRT.DLL C 运行时而不是 GNU libc。
  • MinGW 也可以在 Linux 上运行,通常用于 Linux->Windows 交叉编译。
  • @Clifford - silmor.de/39 例如说如何构建 MinGW 以在 Linux 上运行。
  • 嗯...抱歉,我在 Linux 上安装了它(Xubuntu,但它似乎来自 Debian => 包“mingw32”、“mingw32-binutils”和“mingw32-runtime” - 这些包包含“C 和 C++ 交叉编译器”)。我用它一两次来编译不想在 Windows 上直接编译的东西。
  • 那我就更正了。但是,它仍然不支持 OP 的“使用 Visual Studio 调试”的要求。
【解决方案2】:

我能想到的可能性有很多:

  • 您可以尝试在 Wine 下运行 Visual Studio。如果 Visual Studio 未运行,您仍然可以运行命令行工具。

  • 在虚拟机中运行完整的 Windows 安装。我已经在 Windows 上使用 Linux 做到了这一点,但不是相反,但我确信这是可能的。

  • 使用 VNC 从 Linux PC 访问单独的 Windows PC

  • 使用 GCC 的交叉构建而不是 Visual Studio

【讨论】:

  • 为什么将最佳选项列为最后一个?
  • @gimpf:按出现的顺序列出,“最佳选择”是一个见仁见智的问题。 OP 想使用 Visual Studio 调试器,而最后一个选项不支持该目标,所以我想说在这种情况下它不是最糟糕的解决方案。
【解决方案3】:

您需要一个交叉编译包。您也可以使用Wine 库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 2012-03-03
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多