Box64 快速上手指南:在 ARM64 设备上运行 x86_64 程序

📅 发布时间:2026/8/23 15:27:55
Box64 快速上手指南:在 ARM64 设备上运行 x86_64 程序 Box64 快速上手指南在 ARM64 设备上运行 x86_64 程序【免费下载链接】box64Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices项目地址: https://gitcode.com/gh_mirrors/bo/box64把一个在 PC 上编译好的 64 位工具拷到 ARM64 设备大概率收到同一句回复Exec format error。Box64 是 Linux 用户态的 x86_64 模拟器它把 x86_64 指令翻译成 ARM64、RISC-V、龙芯的原生指令不需要虚拟机也不改内核。这篇文章按场景组织先装好并验证再跑 Steam、Wine、32 位二进制这些实际场景遇到问题时再谈调参和机制。Box64 安装步骤在 ARM64 上编译并验证Debian/Ubuntu 系先装构建工具sudo apt install -y build-essential cmake git然后克隆、编译、安装。-D ARM_DYNARECON会打开动态重编译器DynaRec把 x86_64 在线翻译成原生指令的组件git clone https://gitcode.com/gh_mirrors/bo/box64 cd box64 mkdir build cd build cmake .. -D ARM_DYNARECON -DCMAKE_BUILD_TYPERelWithDebInfo make -j4 sudo make install sudo systemctl restart systemd-binfmt重启 binfmt 服务这步最容易被漏掉。注册成功后系统会把 x86_64 二进制自动路由给 box64输入程序名就能直接跑。验证只需两条命令box64 --version box64 /bin/ls版本号能打出来、目录列表和原生运行一致说明装好了。内存小的设备比如 1GB 的树莓派把-j4降成-j1或-j2防止编译中途内存不足。在 ARM 上运行 x86_64 程序四个实战场景直接跑 64 位 Linux 程序问题PC 上编译好的 64 位工具某款服务器组件、独立工具在 ARM 上拒绝启动。操作装好 box64 后直接输程序名binfmt 会自动转发未注册 binfmt 时用box64 ./程序名的形式。预期效果程序启动行为与原生运行一致。在 ARM 上安装 Steam问题Linux 版 Steam 客户端本身是 x86_64 二进制装不上。操作用项目根目录自带的安装脚本./install_steam.sh steam Linux 客户端依赖 Box86 或 Box32 并开启 binfmt内存低于 6GB 的机器建议先准备 swap。启用 Steam 的 64 位专属客户端SteamRT3在 Box64 下更稳。预期效果客户端启动后可直接下载并运行 64 位 Linux 游戏。用 Wine 跑 Windows 64 位程序问题notepad.exe 这类 64 位 Windows 程序在 ARM 上没有反应。操作先在宿主机装 wine64 软件包再让 box64 接管 winebox64 wine64 notepad.exe预期效果记事本窗口弹出。同一条链路还能跑其他 x86_64 Windows 程序Steam PlayProton场景也走这里。处理 32 位 x86 二进制问题32 位 x86 程序 box64 不管——它只处理 64 位。操作编译时在 cmake 命令追加-DBOX32ON -DBOX32_BINFMTON。Box32 集成在 box64 内部用 64 位环境模拟出 32 位运行环境armhf 设备也可以考虑兄弟项目 Box86。⚠️ Box32 仍处于实验阶段关键业务别依赖它。预期效果安装后 32 位和 64 位二进制都能被系统识别并自动执行。Box64 配置参数速查表配置从三处读取~/.box64rc用户、/etc/box64.box64rc系统、环境变量。rc 文件优先于环境变量用户文件优先于系统文件。最常用的三个参数参数默认作用什么时候调BOX64_DYNAREC_BIGBLOCK2控制重编译器拼出的原生代码块有多大Unity 这类多线程/JIT 程序用 0Wine 场景可试 3BOX64_DYNAREC_FORWARD128拼代码块时允许的向前间隙只接受 0/128/256/512/1024越大越激进BOX64_DYNACACHE1翻译出的原生代码缓存写到~/.cache/box640 关闭2 只读不写默认上限 2048 MiB其余还有几十个参数强内存模型、标志位处理、LD_LIBRARY_PATH 等完整清单见 docs/USAGE.md。~/.box64rc支持按程序名开段落例如给[factorio]单独一组参数[*]段落则是全局默认。Box64 常见问题与排查现象装完还是Exec format error。原因binfmt 注册没生效多半是服务没重启。解决执行sudo systemctl restart systemd-binfmtAndroid 上没有 systemd需手动挂载binfmt_misc并注册步骤见 docs/COMPILE.md。现象error while loading shared libraries: libxxx.so.x。原因box64 不模拟图形、音频这类库调用直接转发给宿主机的原生库——缺库说明 ARM 宿主机本身没装。解决装上对应的宿主机库Mesa GL、OpenAL 等库路径不常规时用 BOX64_LD_LIBRARY_PATH 指向库目录。现象大程序第一次启动慢第二次明显快。原因不是故障。DynaCache 首次运行时把翻译好的代码落盘第二次启动直接命中缓存。解决保持默认的 BOX64_DYNACACHE1缓存目录别删缓存目录太大就用 BOX64_DYNACACHE_LIMIT 控制体积。Box64 的工作原理一句话热代码现场重编译库调用直接借用。动态重编译器盯住跑得最勤的代码块把它们从 x86_64 翻译成原生指令并缓存复用翻译不动的部分回落到解释执行。程序调用 OpenGL、Vulkan、X11 时box64 不模拟这些库而是经包装层直接转发给宿主机的本地实现。DynaCache 再把生成的原生代码写到磁盘下次启动免翻译。重编译器实现见 src/dynarec/主流程入口在 src/core.c。配套组件与容器化部署box64 编译时还可以开启实验性的 WowBox64cmake 选项-DWOW64ON供 Wine WOW64 使用32 位环境除了 Box32armhf 设备上也可搭配 Box86。容器内照宿主机的克隆 → cmake → make install流程走一遍入口命令直接跑任意 64 位 Linux 程序即可。各平台RK3588、树莓派、RISC-V、龙芯等的编译参数差异见 docs/COMPILE.md 里的分平台清单。至此Box64 让 x86_64 软件在 ARM64 设备上变成装完就能跑先跑通遇到卡顿或异常再回配置表里找参数。参数全表docs/USAGE.md核心源码src/core.c。【免费下载链接】box64Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices项目地址: https://gitcode.com/gh_mirrors/bo/box64创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考