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

Ubuntu 20.04.2 LTS下编译Super Mario 64生成32位MIPS可执行文件致执行失败,求助64位编译方案

解决Ubuntu 20.04编译Super Mario 64后无法执行二进制的问题

问题本质

你遇到的核心问题是:默认编译出的Super Mario 64二进制是针对N64主机的MIPS 32位架构,而非你的x86_64 Ubuntu系统。这就是为什么file命令显示它是ELF 32-bit MSB executable, MIPS,且直接执行会提示格式错误——你的x86_64 CPU无法直接理解MIPS指令集。

为什么会生成MIPS文件?

Super Mario 64的原始代码是为任天堂N64主机开发的,该主机使用的是MIPS III架构的CPU。你克隆的官方 decomp 仓库默认配置是编译出N64可执行文件(ROM格式或对应的MIPS ELF),目的是还原原版N64游戏,而非直接在桌面x86系统运行。

解决方案

根据你的需求,有两种可行方案:

1. 使用N64模拟器运行编译后的ROM

这是最直接的方式,因为编译出的sm64.us.bin本身就是标准的N64 ROM文件:

  • 安装Mupen64Plus模拟器(Ubuntu官方源提供):
    sudo apt update && sudo apt install mupen64plus
    
  • 加载ROM运行:
    mupen64plus build/sm64.us.bin
    

2. 编译x86_64原生可执行文件

如果想直接在Ubuntu上运行原生x86_64版本,需要使用支持PC移植的分支:

  • 检查你克隆的仓库是否有PC移植分支(比如sm64pc相关分支),如果没有,可以找专门的SM64 PC移植仓库。
  • 切换到PC移植分支后,按照文档指定的编译命令执行,通常会需要指定TARGET=pc这类参数,例如:
    make TARGET=pc VERSION=us -j4
    
    编译完成后,生成的二进制就是x86_64架构的,可以直接在你的Ubuntu系统上执行。

额外说明

你之前排查的“64位系统运行32位二进制”思路方向不对——这里的问题不是x86架构的32位/64位差异,而是完全不同的指令集架构(x86_64 vs MIPS)。即使你的系统是64位,也无法直接运行MIPS二进制,除非用QEMU这类跨架构模拟器,但显然N64模拟器更适合运行SM64。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:43:12