【发布时间】:2021-10-05 13:39:56
【问题描述】:
我是一个新的 C 语言学习者和设施。我在我的 PC 上下载了 Ubuntu 20.04 LTS WSL,用于编译 gcc 中的代码。问题是,在 Ubuntu 中编译的代码运行良好,但是当我将它发送到 Windows 时,它说程序无法运行,因为没有与 x64 位 Windows 兼容的版本。我用 -m64 标志编译它以确保它是 x64 位,但它仍然不能在 Windows 上运行。这是什么原因?
【问题讨论】:
-
你为 Windows 交叉编译了吗?
-
您是说您在 Linux(WSL 中的 Ubuntu)中编译了该程序并尝试在 Windows(WSL 之外)运行它吗?这并不奇怪。二进制文件(通常?总是?)特定于操作系统。
-
@ikegami 我会一直说。 Windows 使用可移植可执行 (PE) 格式,而 Linux 和类 Unix 系统使用可执行和可链接格式 (ELF)。
-
@ErdalKüçük 这不是真的。例如 mac 使用 Mach 可执行文件,Linux 也可以运行 COFF 或 A.out 格式。 Windows 上也有很多可执行格式有 NE、PE、PE+...
标签: c linux ubuntu windows-subsystem-for-linux wsl-2