【问题标题】:Compile a C program developed in Linux for Windows [closed]为 Windows 编译在 Linux 中开发的 C 程序 [关闭]
【发布时间】:2020-07-13 17:12:12
【问题描述】:

我在 Linux 中开发了一个程序,因为 libcurl 库和我项目所需的一些其他库。

我现在已经完成了该项目,但我需要将其发送给使用 Windows 10 系统的客户。在不发送代码进行重新编译的情况下将程序提供给他们的最佳方法是什么?

【问题讨论】:

标签: c linux windows


【解决方案1】:

在不发送代码进行重新编译的情况下将程序提供给他们的最佳方法是什么?

我看到了两种解决方案:

  1. 下载 Windows 试用版/预览版并在此处编译
  2. 下载 mingw 并在 Windows 上使用它进行交叉编译。

你可能不喜欢第一个解决方案,我也不喜欢。我找到了另一个答案 [1],其中说明了如何做到这一点(链接到 Code::Blocks 论坛 [2] 上的教程)

[1]How to compile for Windows on Linux with gcc/g++?

[2]http://forums.codeblocks.org/index.php?topic=3343.0

请按照[1]处的回答。

【讨论】:

  • 客户端重新编译该代码的能力最差。这不仅仅是重新编译。代码会进行修改,您将花费大部分时间来设置持续集成。第一步,将代码放到一个私有的 GitHub 存储库中,然后将一个 CO 系统(例如 Travis)链接到它,以便在每次提交时自动完成 Linux 构建。然后开始使用 Windows 版本的 curl 等拉取包,并让构建工作。在 Windows 上,对于原生包,chocolatey 可以被视为标准包管理器。我敢打赌 curl 已经存在了。所以这可能很容易。
  • 是的。在这种情况下,CI 是很好的解决方案(提交/推送、构建、允许将构建的工件下载给客户)。但是如果作者不想以这种方式设置它,那么在本地 W10 上编译或交叉编译和发送二进制文件都是可以的解决方案。 :-)
  • 无论如何,您都需要构建脚本来做到这一点。所以我建议为 curl 安装一个巧克力包,然后从那里开始。
【解决方案2】:

如果您的客户使用的是 Windows 10,我强烈建议您查看 WSL:适用于 Linux 的 Windows 服务。您可以从 Windows 应用商店安装 Linux 发行版,例如 Ubuntu。

运行 WSL 的 Linux 不在虚拟机内部,而是与 Windows 紧密耦合。

例子:

  • 在 Windows 任务管理器中,我可以看到 Linux 正在运行的进程

  • 在 Ubuntu 中,我可以在没有网络的情况下使用 %appdata% 下的个人文件(不需要 Samba)

  • 您可以从 Windows shell 执行任何 Linux 命令,只需在它们前面加上 wsl

功能多多,半天玩一玩发现。 您可以发现您的程序无需重新编译就可以在带有 WSL 的 Windows 中运行。

其实官方windows 10有wsl 1。

下一次 windows 10 升级将部署 wsl 2,它可以与 windows 并行运行 - 一个完整的 Linux 内核。

微软看到了 Linux 和 Android 的崛起,以及市场份额的流失。他们想出了一个巧妙的想法:购买 Windows,您就拥有了 Windows 和 Linux,尽可能轻松地协同工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2011-09-22
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多