You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行64位Linux的Armv8(AArch64)设备上编译运行32位二进制程序

问题解答

运行64位Linux的Armv8架构(含Cortex-A72)设备完全支持编译、运行32位AArch32(Arm32)二进制程序,你此前使用默认AArch64架构gcc添加-m32参数编译失败是正常现象:原生AArch64 gcc本身就不支持生成32位Arm代码,该参数仅适用于x86架构的gcc,和AArch64 gcc的编译参数无关。

操作步骤

一、配置32位程序运行环境

  • 首先确认内核开启了兼容32位程序的支持,执行命令:
    zcat /proc/config.gz | grep CONFIG_COMPAT
    输出为CONFIG_COMPAT=y即代表支持,目前主流Arm64发行版的默认内核均已开启该配置。
  • 安装32位基础运行库,以Debian/Ubuntu系列发行版为例,先添加armhf架构源:
    sudo dpkg --add-architecture armhf && sudo apt update
    再安装32位C运行库:
    sudo apt install libc6:armhf
    若后续运行32位程序提示缺少依赖,对应安装[包名]:armhf格式的32位依赖包即可。配置完成后直接执行32位二进制文件即可正常运行。

二、编译32位程序

不要使用系统默认的AArch64 gcc,直接安装32位Arm编译器即可:

  • 安装编译器包,以Debian/Ubuntu系列为例:
    sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
  • 编译时将原调用gcc的命令替换为arm-linux-gnueabihf-gcc即可,示例:
    arm-linux-gnueabihf-gcc test.c -o test_32bit
    编译生成的test_32bit就是可直接在当前设备运行的32位二进制程序。

如果使用RHEL/Fedora系列发行版,包名对应调整为gcc-arm-linux-gnueabihf、glibc-arm32-linux-gnu即可,操作逻辑一致。

内容的提问来源于stack exchange,提问作者Sp00nc3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:24:08