首页 > 解决方案 > linux中的C编译程序在那里运行但在windows中没有

问题描述

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

标签: clinuxubuntuwindows-subsystem-for-linuxwsl-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(我从 Code 开始::Blocks 10 年前,我认为它仍然是对初学者最友好的 IDE)并开始开发而没有增加 WSL 的复杂性,或者更糟糕的是,交叉编译。


推荐阅读