gcc:在 32 位平台上编译 64 位二进制文​​件

Posted

技术标签:

【中文标题】gcc:在 32 位平台上编译 64 位二进制文​​件【英文标题】:gcc: Compile a 64-bit binary on 32-bit platform 【发布时间】:2011-11-26 18:55:20 【问题描述】:

是否可以在 32 位 Linux 平台上使用 gcc 编译 64 位二进制文​​件?

【问题讨论】:

linuxquestions.org/questions/linux-hardware-18/… harper89:这是一个非常无用的论坛帖子。 【参考方案1】:

如果您安装了 multilib GCC,只需在命令行中添加 -m64 即可。如果编译器不支持 multilib,编译器应该会报错。

要进行链接,您需要标准库的所有 64 位对应项。如果您的发行版有一个 multilib GCC,这些也应该在存储库中。

【讨论】:

你的意思是,我需要 64 位对应的。 周末:嗯,是的。修复了:) 请注意,这适用于编译器支持的所有架构。例如,这是对 ARM 设备进行交叉编译的方式。您当然可以在您的平台上编译东西(如果有足够的资源),但是大多数人使用交叉编译。树莓派就是一个很好的例子。官方操作系统是 Rasbian,它基本上是一个 Debian,因此您可以为 Rasbian 编译 ARM 二进制文件(包括 Raspberry Foundation 为您的 PC 上的 Pi 处理器提供的定制 GCC(不管它是 32 位还是 64 位)。您只需需要添加对 ARM 的支持。【参考方案2】:

如果-m64 选项不起作用,请进入 Synaptic 并搜索 gcc-multilib 或 g++-multilib 并安装软件包。然后,使用-m64 选项进行编译。

【讨论】:

【参考方案3】:

您需要一个可以在 64 位机器上编译的 gcc,例如x86_64-linux-gcc。检查您的分发包管理器。

【讨论】:

我只有两年了,所以没关系:)【参考方案4】:

我想你可以先安装gcc-multilib 包。 然后使用gcc -m64 yourcode编译你的代码,你可以使用file yourprogram检查ELF文件,输出应该是这样的 yourprogram: ELF 64-bit LSB executable,.......

【讨论】:

以上是关于gcc:在 32 位平台上编译 64 位二进制文​​件的主要内容,如果未能解决你的问题,请参考以下文章

在 64 位 Debian wheezy 多架构主机上编译使用 ssl 的 32 位二进制文​​件

在运行 64 位 linux 的 Armv8 (aarch64) 上编译并运行 32 位二进制文​​件

在 64 位系统上组装 32 位二进制文​​件(GNU 工具链)

如何使用 npm 在 64 位系统上构建 32 位二进制文​​件?

无法在 64 位 Debian 上运行 32 位二进制文​​件

GCC编译