【问题标题】:cpp exe file working on wsl but not working on windows10 cmdcpp exe文件在wsl上工作但在windows10 cmd上不工作
【发布时间】:2021-01-19 17:35:51
【问题描述】:

我在 WSL 中使用命令g++ main.cpp foo.cpp 使用 g++ 创建了一个可执行文件,并且在 WSL 环境中运行良好。

但是,在 windows 10 的命令行中,当我尝试执行该文件时,它说 由于与 64 位版本的 Windows 不兼容,程序无法启动或运行。 [不支持 16-位应用]

所以,问题是“如何在 WSL 中使用 g++ 构建 64 位或 32 位可执行文件。” 目前,我想我得到的是 16 位版本。

【问题讨论】:

  • 如果您需要更多信息,请询问我。谢谢!
  • 根据page,它说 gcc 和 g++ 编译器默认为 64 位模式编译。但为什么我得到的是 16 位版本?
  • 如何确保 g++ 将构建 32 位或 64 位文件?我正在网上寻找,但还没有找到解决方案。

标签: c++ gcc build g++ exe


【解决方案1】:

WSL 是一个 Linux 层,它的gcc 将生成 Linux 可执行文件。通过 WSL 运行它们当然可以,但是如果您尝试在普通 Windows 中运行它们,Windows 会向您耸耸肩。

如果你想从 Linux 编译 Windows 可执行文件,你需要使用 gcc 多目标,本质上是使用在 Linux 下编译的 Windows gcc 版本。

问题与 16 位代码无关,这只是 Windows 对您提供的奇怪可执行文件的最佳猜测。

【讨论】:

    【解决方案2】:

    我想说的是,Linux 和 Windows 中可执行文件的文件格式不同,所以你不能把你在 Linux 上构建的东西(即在 WSL 中)拿来在 Windows 上运行。

    可执行文件格式存在各种特定于操作系统的东西,导致它们不兼容,甚至在您开始与操作系统和编译器的标准库交互之前。

    【讨论】:

      猜你喜欢
      • 2022-07-05
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 2012-01-22
      相关资源
      最近更新 更多