1

正如标题所说,我已经编译了 C 程序并在 64 位机器上创建了一个二进制文件。这个二进制文件在 32 位下工作吗?

4

3 回答 3

6

64 位二进制文​​件无法在 32 位操作系统上运行。如果file报告ELF 64-bit,您有一个 64 位二进制文​​件。

为了在 64 位 Linux 上构建 32 位二进制文​​件,您需要传递-m32给 gcc。您还需要安装 32 位库 ( sudo apt-get install libc6-dev-i386)。

于 2010-02-08T10:07:46.620 回答
5

编译机无所谓。重要的是:生成的代码是 32 位(答案:是)还是 64 位(答案:否)。

于 2010-02-08T09:55:02.327 回答
1

它可以在 32 位机器上运行吗?一个 CPU 不支持 64 位模式?不。

它可以在 32 位本机操作系统上的 64 位 VM 上运行吗?是的,根据我的经验。

一个令人惊讶的结果是 64 位 VM 可以在 32 位主机操作系统下运行,前提是 CPU 有能力并且您不想为来宾分配太多内存(>2G 左右)。

于 2010-02-08T22:08:16.100 回答