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 位二进制文件?