c - linux中的C编译程序在那里运行但在windows中没有
问题描述
我是一个新的 C 语言学习者和设施。我在我的 PC 上下载了 Ubuntu 20.04 LTS WSL,用于在gcc
. 问题是,在 Ubuntu 中编译的代码运行良好,但是当我将它发送到 Windows 时,它说程序无法运行,因为没有与 x64 位 Windows 兼容的版本。我用 -m64 标志编译它以确保它是 x64 位,但它仍然不能在 Windows 上运行。这是什么原因?
解决方案
二进制文件(已编译的程序)旨在用于特定系统:当您在 Ubuntu 中安装 gcc 时,它会自动默认为 gcc 的 Linux 版本,并且该版本只能创建Linux二进制文件。
就像 Linux 不能使用.exe
开箱即用的文件一样,Windows 也不能使用开箱即用的 Linux 二进制文件,这就是为什么你有“没有与 x64 位 Windows 兼容的版本”的原因,这是因为你正在尝试的文件使用与 x64 Linux兼容。
知道这一点,有多种方法可以从这里继续前进:
- 安装 windows 编译器并使用 windows 来编译和运行您的代码
- 继续使用 WSL2 编译和运行代码
- 在 WSL 中安装 Windows 编译器,从 Ubuntu 构建,将文件复制到 Windows 并从那里执行
- 在你的 windows 机器上安装一个 Linux 编译器,从那里构建它,将它复制到 WSL 并在 Ubuntu 上执行它
- 安装 Linux 机器并使用它来本地编译和运行您的代码
我可能会选择 1 或 5,WSL2 是一个不错的工具,但由于您仅限于终端,它对初学者并不友好,我会选择一个操作系统,在其上安装一个不错的初学者友好 IDE(我从 Code 开始::Blocks 10 年前,我认为它仍然是对初学者最友好的 IDE)并开始开发而没有增加 WSL 的复杂性,或者更糟糕的是,交叉编译。
推荐阅读
- html - 尝试创建一个自动完成 URL 的表单
- aix - 当我的应用程序从 AIX6.1 执行简单的脚本文件时,无法得到结果。请参阅标准错误。如何正确检查?
- xamarin - 从 Xamarin.UITest 运行应用程序时,NSUserDefaults plist 文件被删除并且不再创建
- python - Python:如何从用户那里获取多个值?
- c++ - wxWidgets - 在 OS X 上阻止窗口模式对话框
- ruby-on-rails - Devise & Google OAuth2:无法从请求中确定客户端 ID
- php - whereBetween 和 orWhere 获取日期范围内的数据
- react-native - 反应本机按钮对齐问题
- webpack - 如何在 laravel 项目之外的 laravel mix 中使用版本控制
- git - Git:拉取并使用存储库的一部分(特定目录)