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

如何在ARM(aarch64)架构Kali Linux上运行x86 32位程序?

解决x32 ABI程序在ARM64 Kali上的运行问题

问题原因

你用x86_64-linux-gnux32-gcc编译出的是x86_64架构下的x32 ABI程序(ILP32数据模型,指针和数据都是32位,但基于x86_64指令集),而qemu-x86_64-static默认只支持x86_64的标准LP64 64位ABI,直接运行会因为架构/ABI不匹配报错;-cpu qemu32是模拟i386(传统x86 32位)CPU,和x32 ABI的x86_64架构不兼容,所以也无法运行。

两种解决方案

方案1:运行x32 ABI程序

如果确实需要保留x32 ABI的二进制文件,按以下步骤操作:

  1. 检查你的QEMU是否支持x32 ABI:
    qemu-x86_64-static -cpu help | grep x32
    
    如果输出包含x32=on相关选项,说明支持。
  2. 使用带x32支持的CPU参数运行:
    qemu-x86_64-static -cpu x86_64,x32=on ./test1_32
    
  3. 如果QEMU不支持x32,可尝试安装Kali仓库中带x32支持的QEMU包(如qemu-user-static-x32),或重新编译QEMU并启用--enable-x32配置选项。

方案2:编译并运行传统i386 32位程序

如果你的需求只是运行普通32位x86程序,更简单的做法是切换到i386交叉编译器:

  1. 安装i686交叉编译器:
    sudo apt install gcc-multilib-i686-linux-gnu
    
  2. 重新编译程序为传统i386 32位格式:
    i686-linux-gnu-gcc test1.c -o test1_i386
    # 静态编译(可选,避免依赖问题)
    i686-linux-gnu-gcc test1.c -static -o test1_i386_static
    
  3. 使用qemu-i386-static运行:
    qemu-i386-static ./test1_i386
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:45:16