cpp exe 文件在 wsl 上工作但不在 windows10 cmd 上工作
cpp exe file working on wsl but not working on windows10 cmd
我使用命令 g++ main.cpp foo.cpp
在 WSL 中使用 g++ 创建了一个可执行文件,并且在 WSL 环境中工作正常。
但是,在 windows 10,命令行中,当我尝试执行文件时,它说 程序无法启动或 运行 由于与 64 位不兼容Windows. [不支持的 16 位应用程序]
的版本
所以,问题是“如何在 WSL 中使用 g++ 构建 64 位或 32 位可执行文件。”
目前,我想我得到的是 16 位版本。
WSL 是一个 Linux 层,其 gcc
将生成 Linux 个可执行文件。 运行 他们通过 WSL 当然会工作,但如果你尝试 运行 他们在普通 Windows 将 Windows 对你耸耸肩。
如果你想从 Linux 编译 Windows 可执行文件,你需要使用 gcc
多目标,基本上使用 Windows gcc
版本编译在 Linux.
下
问题与 16 位代码无关,这只是 Windows 对您提供的奇怪可执行文件的最佳猜测。
我会说可执行文件的文件格式在 Linux 和 Windows 中是不同的,所以你不能拿走你在 Linux 中构建的东西(即在 WSL 中) , 运行 它在 Windows.
可执行文件格式存在各种 OS 特定的东西,这使得它们不兼容,甚至在您开始与 OS 和编译器的标准库进行交互之前。
我使用命令 g++ main.cpp foo.cpp
在 WSL 中使用 g++ 创建了一个可执行文件,并且在 WSL 环境中工作正常。
但是,在 windows 10,命令行中,当我尝试执行文件时,它说 程序无法启动或 运行 由于与 64 位不兼容Windows. [不支持的 16 位应用程序]
的版本所以,问题是“如何在 WSL 中使用 g++ 构建 64 位或 32 位可执行文件。” 目前,我想我得到的是 16 位版本。
WSL 是一个 Linux 层,其 gcc
将生成 Linux 个可执行文件。 运行 他们通过 WSL 当然会工作,但如果你尝试 运行 他们在普通 Windows 将 Windows 对你耸耸肩。
如果你想从 Linux 编译 Windows 可执行文件,你需要使用 gcc
多目标,基本上使用 Windows gcc
版本编译在 Linux.
问题与 16 位代码无关,这只是 Windows 对您提供的奇怪可执行文件的最佳猜测。
我会说可执行文件的文件格式在 Linux 和 Windows 中是不同的,所以你不能拿走你在 Linux 中构建的东西(即在 WSL 中) , 运行 它在 Windows.
可执行文件格式存在各种 OS 特定的东西,这使得它们不兼容,甚至在您开始与 OS 和编译器的标准库进行交互之前。