【问题标题】:C compiled program in linux run there but does not in windowslinux中的C编译程序在那里运行但在windows中没有
【发布时间】:2021-10-05 13:39:56
【问题描述】:

我是一个新的 C 语言学习者和设施。我在我的 PC 上下载了 Ubuntu 20.04 LTS WSL,用于编译 gcc 中的代码。问题是,在 Ubuntu 中编译的代码运行良好,但是当我将它发送到 Windows 时,它说程序无法运行,因为没有与 x64 位 Windows 兼容的版本。我用 -m64 标志编译它以确保它是 x64 位,但它仍然不能在 Windows 上运行。这是什么原因?

【问题讨论】:

标签: c linux ubuntu windows-subsystem-for-linux wsl-2


【解决方案1】:

我建议最好在 Windows 系统上编译你的 c 程序。交叉编译确实有效,但你说你是新手,我建议在 windows 系统上安装 c 编译器并本地编译你的代码

How to compile C code in Linux to run on Windows?

【讨论】:

    【解决方案2】:

    二进制文件(已编译的程序)用于特定系统:当您在 Ubuntu 中安装 gcc 时,它会自动默认为 gcc 的 Linux 版本,并且该版本只能创建 Linux二进制。

    就像 Linux 不能使用开箱即用的 .exe 文件一样,Windows 也不能开箱即用地使用 Linux 二进制文件,这就是为什么你会说“没有与 x64 位 Windows 兼容的版本”,这是因为您尝试使用的文件与 x64 Linux 兼容。

    知道这一点,有多种方法可以从这里继续前进:

    1. 安装 windows 编译器并使用 windows 编译和运行您的代码
    2. 继续使用 WSL2 编译和运行代码
    3. 在 WSL 中安装 Windows 编译器,从 Ubuntu 构建,将文件复制到 windows 并从那里执行
    4. 在您的 Windows 机器上安装 Linux 编译器,从那里构建它,将其复制到 WSL 并在 Ubuntu 上执行它
    5. 安装一台 Linux 机器并用它来编译和运行你的代码

    我可能会选择 1 或 5,WSL2 是一个不错的工具,但由于您仅限于终端,它对初学者并不友好,我会选择一个操作系统,在其上安装一个不错的初学者友好 IDE(我10 年前从 Code::Blocks 开始,我认为它仍然是对初学者最友好的 IDE)并开始开发而没有增加 WSL 的复杂性,甚至更糟的是交叉编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 2017-07-08
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      相关资源
      最近更新 更多