Box64 使用指南:3 步在 ARM64 上跑通 x86_64 程序

发布时间:2026/8/23 14:43:27
Box64 使用指南:3 步在 ARM64 上跑通 x86_64 程序 Box64 使用指南3 步在 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在树莓派或 RK3588 开发板上双击一个 x86_64 编译的 Linux 程序终端只回一句无法执行文件格式。Box64 就是处理这个问题的工具它是一个 Linux 用户空间的 x86_64 模拟器让 ARM64、RISC-V 和龙芯设备直接运行 x86_64 程序不需要虚拟机。下面按装好它、配好它、排错三条线把最常用的部分讲清楚。项目定位它和完整虚拟机差在哪Box64 只模拟 x86_64 指令的执行这一层运行在用户空间不碰内核也不做整机模拟。和 QEMU 这类全系统方案最大的区别在于库的处理方式宿主系统的 64 位本地库libc、libm、OpenGL、SDL 等被 Box64 直接桥接调用x86_64 程序对这些库的请求会转发给宿主自己的实现。好处是省内存、图形开销小代价是它只接 x86_64 二进制32 位程序要交给同家族的 Box32/Box86。新手记住一句话就够Box64 是 64 位 Linux 程序的运行器用法就是给命令加个前缀。box64 ./program [参数]预期程序按 x86_64 语义在 ARM 机器上跑起来终端输出与原生执行一致。从 0 到跑通Box64 安装步骤第一步装依赖以 Debian/Ubuntu 为例只需要基础编译链sudo apt update sudo apt install build-essential cmake git预期命令无报错cmake 和 gcc 就位即可开工。第二步编译并安装git clone https://gitcode.com/gh_mirrors/bo/box64 cd box64 mkdir build cd build cmake .. -D ARM_DYNARECON -D CMAKE_BUILD_TYPERelWithDebInfo make -j$(nproc) sudo make install sudo systemctl restart systemd-binfmt几个要点-D ARM_DYNARECON打开动态重编译这是性能关键不要漏RelWithDebInfo带调试符号以后排崩溃用得上。其他架构把开关换掉即可RISC-V 用-D RV641龙芯用-D LARCH641树莓派 5 用-D RPI5ARM641完整清单在 docs/COMPILE.md。首次安装后重启 binfmt 服务之后 x86_64 二进制可以不加前缀直接执行。预期make 无报错box64 安装到 /usr/local/bin。第三步验证安装box64 --version box64 /bin/ls预期第一条打印版本信息第二条正常列出目录内容说明 x86_64 二进制已被接管。装好后跑一次box64-bash还能得到一个 x86_64 的 bash 环境适合批量测试。按场景选配置Box64 配置方法Box64 读两个 INI 格式的配置文件系统级/etc/box64.box64rc和用户级~/.box64rc优先级为~/.box64rc/etc/box64.box64rc 环境变量。按程序名开段落如[factorio]只对那个程序生效名字支持*通配[*]段则对全部程序生效。下面是三档可直接抄的预设。默认档日常软件[*] BOX64_DYNAREC1适用浏览器工具、命令行工具、普通应用。动态重编译和磁盘缓存 DynaCache缓存在~/.cache/box64默认上限 2GB本来就是开着的二次启动会明显变快所以这一档基本不用写任何东西。性能档游戏与长时运行的程序[*] BOX64_DYNAREC_BIGBLOCK3 BOX64_DYNAREC_FORWARD1024 BOX64_DYNAREC_SAFEFLAGS0 BOX64_DYNAREC_CALLRET2适用 Steam/Wine 游戏和编译型大程序。更大的代码块和更长的前向展开减少块切换开销Wine 程序建议 BIGBLOCK 取 3多出来的开销换来的是热路径更流畅。低配档内存小于 4GB 的设备[*] BOX64_DYNAREC_BIGBLOCK1 BOX64_DYNAREC_FORWARD256 BOX64_DYNACACHE_LIMIT512适用树莓派 3/4 等小内存设备。缩小代码块和缓存上限单位 MiB压低内存与磁盘占用不想缓存落盘也可以直接设BOX64_DYNACACHE2让它只读不写。报错速查三个最常见的坑现象原因处理启动时报 cannot open shared object 或 dlopen 失败宿主缺少程序依赖的 x86_64 库设BOX64_DLSYM_ERROR1定位具体缺哪个库再装对应包或运行仓库自带的box64-bundle-x86-libs.sh打包一批常用 x86 库Unity 游戏黑屏、启动后闪退宿主 OpenGL 版本不足或内存模型差异设MESA_GL_VERSION_OVERRIDE3.2和BOX64_DYNAREC_STRONGMEM1用 Panfrost 驱动时再加PAN_MESA_DEBUGgl3SIGSEGV 崩溃日志看不懂调试信息不足设BOX64_LOG3与BOX64_DYNAREC_DUMP1重跑拿到崩溃地址和重编译块内容再排查原理速览动态重编译 本地库桥接Box64 的核心是 DynaRec 动态重编译器程序运行起来后它把 x86_64 指令按代码块实时翻译成宿主架构如 ARM64的机器码翻译结果保留在内存中反复使用。所以游戏主循环、数据处理这类反复执行的热代码开销远低于逐条解释反过来一次性的初始化代码收益不大。遇到 libc、图形库这类系统调用时它不翻译、直接桥接到宿主本地库执行。这就是性能不错的来源热的地方靠重编译重的地方靠宿主。各架构的翻译实现都在 src/dynarec/ 下解释器在 src/emu/ 下有兴趣可以翻。进阶玩法无头服务器 / 容器静态构建 Box64 可以静态编译成单文件版本只带 libc 等最小包装库适合塞进 docker 镜像或无显示器的服务器cmake .. -D STATICBUILDON -D ARM_DYNARECON预期产出的 box64 不依赖额外宿主动态库复制到任意同架构容器里即可运行。联动 Steam一键装客户端Linux 版 Steam 可以配合 Box64 运行注意它还需要 Box86/Box32 处理 32 位组件并开启 binfmt./install_steam.sh steam脚本在仓库根目录负责把 Steam 所需环境装齐跑完后直接启动steam客户端。细节见 docs/STEAM.md。继续深入全部BOX64_*选项说明按性能/兼容性/调试分类docs/USAGE.md各平台编译与交叉编译docs/COMPILE.mdWine 与 Proton 配合docs/WINE.mdSteam 完整指南docs/STEAM.md核心代码重编译在 src/dynarec/库加载在 src/librarian/解释器在 src/emu/自带测试tests/ 目录build 目录下执行ctest可做冒烟验证配置不必一次配全先用默认档跑起来遇到具体程序再按名字开段落微调是上手成本最低的路径。【免费下载链接】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),仅供参考