尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ARM64 设备直接跑 x86_64 程序:Box64 用动态重编译甩开纯解释 10 倍

ARM64 设备直接跑 x86_64 程序:Box64 用动态重编译甩开纯解释 10 倍 ARM64 设备直接跑 x86_64 程序Box64 用动态重编译甩开纯解释 10 倍【免费下载链接】box64Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices项目地址: https://gitcode.com/gh_mirrors/bo/box64Box64 让树莓派、RK3588 等 ARM64、RISC-V、龙芯设备直接运行 x86_64 Linux 程序和游戏。面向已有 64 位 Linux 设备、想跨架构跑软件的用户核心卖点是动态重编译DynaRec比纯解释执行快 510 倍。它到底在做什么Box64 是用户态模拟器不装第二个操作系统直接在你的内核上翻译 x86_64 机器码。它把程序按基本块切成小段动态重编译成本地指令并缓存热点代码反复执行时开销最低。可以类比同传而不是逐句对译——先抓住整段意思只给听众最终能听懂的部分省掉逐字停顿。维度QEMU 用户态完整虚拟机Box64冷启动中等很慢首次偏慢现译代码二次快二次启动无缓存无缓存DynaCache 命中大幅缩短图形路径较差中等直连宿主 OpenGL损失最小配置步骤中等复杂简单10 分钟跑通第一个程序需要一台 64 位小端的 ARM64/RISC-V/龙芯 Linux 设备装好 GCC 和 CMake 即可。最短路径一条命令链走完全程git clone https://gitcode.com/gh_mirrors/bo/box64 cd box64 mkdir build cd build cmake .. -D ARM_DYNARECON -D CMAKE_BUILD_TYPERelWithDebInfo make -j4 sudo make install sudo systemctl restart systemd-binfmt # 首次安装 box64 --version平台选项按需加树莓派 4 用-D RPI4ARM641RK3588 用-D RK35881Android 混合内核再加-DBAD_SIGNALON。看到版本号输出说明构建链路通了。让性能再快一截影响最大的几个变量变量名一句话作用推荐值BOX64_DYNAREC_BIGBLOCK翻译块合并得越大跳转开销越小2默认Unity 改 0BOX64_DYNAREC_FORWARD允许块向后延伸的指令预算1024BOX64_DYNAREC_STRONGMEM插入内存屏障模拟 x86 强内存序1图形/游戏BOX64_DYNACACHE已翻译代码落盘缓存1默认开启别动BOX64_DYNAREC_SAFEFLAGSCALL/RET 标志位模拟的保守程度0默认 1保守可换 2游戏场景偏激进换速度export BOX64_DYNAREC_BIGBLOCK2 export BOX64_DYNAREC_FORWARD1024 export BOX64_DYNAREC_STRONGMEM1日常 CLI偏保守换稳定export BOX64_DYNAREC_STRONGMEM0 export BOX64_DYNAREC_SAFEFLAGS2配置不用每次 export写进~/.box64rcini 格式即可[*]是全局段其余按可执行文件名匹配支持*setup*这类通配符[*] BOX64_LOG1 [*.unity] BOX64_DYNAREC_BIGBLOCK0 BOX64_DYNAREC_STRONGMEM1完整变量清单见 docs/USAGE.md。按场景实战原生 x86_64 命令行工具最容易跑通装完 binfmt 后 x86_64 ELF 会被自动接管什么参数都不用加。box64 ./some-tool box64-bash # 想要一个 x86_64 的 bash 环境高频坑GOG 安装脚本这类靠uname -m判断架构的 shell 脚本要写成box64 script.sh执行否则拿到 ARM 的返回值直接走错分支。Unity / 图形类原生应用核心是让图形栈别按 x86 驱动的路子走多数 Unity 游戏卡死都源于此。export MESA_GL_VERSION_OVERRIDE3.2 export BOX64_DYNAREC_STRONGMEM1 box64 ./YourGame.x86_64Panfrost 驱动上游戏闪退时补一句export PAN_MESA_DEBUGgl3。更多细节见 docs/README Unity 段。Windows 程序经 Wine最复杂Wine64 负责 Windows APIBox64 负责底下的 x86_64 Linux 层32 位组件交给 Box86/Box32。box64 wine64 notepad.exe box64 wine64 game.exe只装了 Box64 没装 Box86 时可选 WOW64 版 Wine 运行 32 位程序实验性。Steam 建议走仓库自带脚本 docs/STEAM.md并在客户端设置里开启实验性 SteamRT3 64 位运行时。踩坑速查现象报缺libxxx.so。根因x86_64 库没装Box64 直接复用宿主库不会凭空变出来。解法用仓库自带脚本 box64-bundle-x86-libs.sh 批量安装 x86 库。现象游戏启动闪退或黑屏。根因Mesa 暴露的 GL 版本低于引擎要求。解法MESA_GL_VERSION_OVERRIDE3.2Panfrost 再加PAN_MESA_DEBUGgl3。现象第二次启动反而变慢、~/.cache/box64占空间。根因DynaCache 在重新生成缓存文件。解法正常现象首次运行后二次启动会明显变快不想写盘就在 rc 里设BOX64_DYNACACHE2。现象多线程程序偶发崩溃。根因x86 强内存序未被模拟。解法BOX64_DYNAREC_STRONGMEM1仍不稳再试2。需要抓现场时开详细日志再跑一次export BOX64_LOG3 BOX64_TRACE_FILEbox64_trace.log box64 ./program 21 | tee output.log它不适合什么Box64 只翻译 x86_64 用户态程序32 位程序要 Box86/Box32主机必须是 64 位小端 ARM64、RV64 或龙芯x86 设备上装它没有意义。它不模拟完整硬件和内核依赖真实设备节点的驱动、以及部分带商业保护的软件会直接失败——这类场景完整虚拟机更稳。另外 Box32 和 WOW64 方案目前都还标着实验性生产环境别依赖。下一步先跑box64 --version和一个纯 CLI 工具确认 binfmt 通再试一个 SDL 或 Unity 游戏按上面组合调BOX64_DYNAREC_STRONGMEM出问题时开BOX64_LOG3留日志对照 docs/USAGE.md 定位。【免费下载链接】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),仅供参考
返回列表