在64位CentOS上为ARM构建32位二进制文​​件

时间:2013-02-27 08:26:05

标签: gcc arm

似乎gcc不接受ARM目标的-m32选项。我不确定gcc在64位Linux上的表现如何,但是如果gcc是在64位Linux上运行的ELF32,它会自动生成32位二进制文​​件吗?

如果有,是否有解决方法?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您需要使用交叉编译器从运行x86或x86_64的主机编译ARM,原因是您的主机和目标是2个完全独立的架构。

交叉编译器通常配置为仅为ARM输出32位或64位二进制(而不是两者)。大多数ARM设备应用程序仅使用32位,因此使用arm交叉编译器而不使用任何额外的参数将构建32位二进制文​​件。

工具链具有其他-m标志来指定机器类型,例如armv7,arm cortex a-8等,以进一步优化。您需要查看ARM交叉编译器的文档。

至于获取适用于目标并在CentOS下运行的正确工具链,最好从目标设备供应商的网站开始。

x86的x86_64版本提供的-m32选项使得gcc编译32位二进制文​​件而不是64位二进制文​​件,因为x86指令集和x86_64(AMD64或Intel EMT64)非常相似。特别是它允许在64位模式下轻松执行32位指令。

相关问题