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

aarch64架构Ubuntu构建带i386依赖项目报404如何解决

问题根因

这个404报错和源地址配置错误无关,本质是aarch64(ARM64)版本的Ubuntu官方软件源完全不提供i386(x86 32位)架构的软件包:

  • i386属于x86指令集的32位标准,和ARM64指令集完全不兼容,原生ARM系统不能直接通过multiarch多架构机制安装运行i386包
  • 你之前参考的i386源修复方案仅适用于amd64(x86_64)版本的Ubuntu,在aarch64系统上完全不生效。
可行解决方案

按优先级从高到低选择即可:

方案1:原生aarch64环境直接构建(无兼容层开销,推荐优先尝试)

先梳理项目构建逻辑:该项目添加i386架构的目的通常是为了安装32位兼容库,但实际RISCV交叉编译、仿真相关的工具链全部提供aarch64原生版本,不需要依赖i386包。
操作步骤:

  1. 先移除之前错误添加的i386架构,修复apt持续报错的问题
sudo dpkg --remove-architecture i386
sudo apt update
  1. 拉取项目代码后修改Makefile:
    • 删掉sudo dpkg --add-architecture i386这行命令
    • 把所有安装依赖项后面带的:i386后缀全部删掉
  2. 直接执行make,跟随提示安装对应arm64版本的依赖包即可完成构建。

方案2:i386 chroot环境配合qemu用户态翻译

如果确实有部分闭源依赖只有i386版本,可以在现有aarch64系统内创建i386隔离运行环境:

  1. 先执行方案1中的清理命令,移除全局的i386架构配置
  2. 安装所需的基础工具:
sudo apt install qemu-user-static schroot debootstrap
  1. 创建i386版本的Ubuntu最小根文件系统,版本和你当前使用的focal(20.04)保持一致:
sudo debootstrap --arch=i386 --foreign focal /opt/i386-chroot
sudo cp /usr/bin/qemu-i386-static /opt/i386-chroot/usr/bin/
sudo chroot /opt/i386-chroot /debootstrap/debootstrap --second-stage
  1. 配置schroot方便快速进入隔离环境,新建/etc/schroot/chroot.d/i386.conf写入如下配置,将其中的用户名替换为你当前登录的系统用户名:
[i386]
description=Ubuntu 20.04 i386
directory=/opt/i386-chroot
root-users=你的用户名
type=directory
users=你的用户名
  1. 执行schroot -c i386即可进入i386隔离环境,在环境内正常执行apt更新、安装依赖、构建项目的流程即可。

方案3:使用x86架构虚拟环境

如果你的虚拟化平台支持创建x86架构虚拟机,直接安装amd64版本的Ubuntu 20.04即可,amd64版本的Ubuntu源原生支持i386多架构,不需要额外配置,直接执行项目自带的Makefile就能完成构建。
如果不想额外创建虚拟机,也可以在现有aarch64系统上用容器运行32位x86的Ubuntu镜像,靠qemu自动完成跨架构翻译,启动容器后直接构建即可,比手动配置chroot更简便。

注意:跨架构翻译运行会有一定性能损耗,如果构建流程较长,优先选择原生构建或者x86虚拟机方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:06:36