在32位平台上编译64位二进制文件的gcc命令

24

在32位Linux平台上使用gcc,能否编译64位二进制文件?


http://www.linuxquestions.org/questions/linux-hardware-18/compiling-64-bit-kernel-in-32-bit-linux-240183/ - sealz
harper89:那是一个非常没有帮助的论坛主题。 - rubenvb
4个回答

31
如果你已经安装了multilib GCC,只需在命令行中添加-m64即可。如果编译器没有使用multilib支持,则会提示错误。
为了链接,您需要所有标准库的64位对应项。如果您的发行版有multilib GCC,则这些库也应该在仓库中。

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

2

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


1

我认为您可以先安装gcc-multilib软件包。 然后使用gcc -m64 yourcode编译您的代码,您可以使用file yourprogram检查ELF文件, 输出应该像这样:yourprogram: ELF 64-bit LSB可执行文件,......


1

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


我只需要再两年,所以没问题 :) - wormsparty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接