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

编译x86_64平台Xen hypervisor始终生成32位ELF可执行文件问题

Xen 4.17编译生成32位二进制问题排查

问题场景

在x86_64架构的Ubuntu 22.04主机上,使用qemu-system-x86_64模拟x86_64环境,编译Xen 4.17版本源码时,执行./configure x86_64和make dist-xen XEN_TARGET_ARCH=x86_64后,生成的xen二进制文件始终为32位版本,不符合预期。

编译后二进制文件信息(翻译后):

xen/xen: ELF 32位LSB可执行文件,Intel 80386架构,版本1(SYSV),静态链接,BuildID[sha1]=c89a133d28ae630dfed7ab0d5d6bdde483e932ce,已去除符号表

排查与解决步骤

  • 检查configure阶段输出
    执行./configure x86_64后,查看输出日志,确认是否存在Target architecture: x86_64的提示。同时确保已安装x86_64编译所需的依赖包,比如gcc-multilib、libc6-dev-amd64等,避免因依赖缺失导致构建降级到32位。

  • 修正configure参数格式
    Xen的configure命令对目标架构的正确指定方式并非直接传入x86_64,正确写法为:

    ./configure --target=x86_64-unknown-linux-gnu
    

    或者直接执行./configure(主机为x86_64时,脚本默认会检测并使用64位目标架构)。

  • 清理编译残留后重新构建
    先彻底清理之前的编译生成文件和配置缓存:

    make distclean
    

    再重新执行配置与编译:

    ./configure
    make dist-xen XEN_TARGET_ARCH=x86_64
    
  • 补充指定架构参数
    部分Xen 4.17的构建脚本中,XEN_ARCH参数也会影响目标架构,可尝试同时指定:

    make dist-xen XEN_ARCH=x86_64 XEN_TARGET_ARCH=x86_64
    
  • 确认依赖完整性
    确保Ubuntu 22.04上已安装Xen 4.17编译所需的全部依赖:

    sudo apt install build-essential libssl-dev libncurses5-dev libyajl-dev uuid-dev libc6-dev-amd64
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:22:03