debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记

这篇具有很好参考价值的文章主要介绍了debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考资料

https://github.com/ptitSeb/box86/blob/master/docs/COMPILE.md

源码地址

GitHub - ptitSeb/box86: Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices

deb在线源地址(打不开):

Itai's box86 apt repo

源码编译

apt install gcc-arm-linux-gnueabihf

mkdir build; cd build; cmake .. -DPHYTIUM=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo; make -j8

sudo make install

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

安装wine64

sudo apt install wine64

安装微信(失败)

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

编译出来的目标文件是32位的,我们需要64位aarch64。box64?

找到box64项目

GitHub - ptitSeb/box64: Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices

mkdir build; cd build; cmake ..; make -j8

sudo make install

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

启动exe失败

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

file分析发现这两个exe都是32位的

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

但是32位的box86在这个平台不能启动,需要安装额外的32位库?

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 gcc-10-base:i386 libstdc++6:i386

sudo apt install libc6-armhf-cross

手动创建软连接

su root
cd /lib
ln -sv /usr/arm-linux-gnueabihf/lib/libBrokenLocale-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libSegFault.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libanl-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libc-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libdl-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libm-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libmemusage.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libnsl-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_compat-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_dns-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_files-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_hesiod-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libpcprofile.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libpthread-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libresolv-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/librt-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libthread_db-1.0.so .
ln -sv /usr/arm-linux-gnueabihf/lib/libutil-2.31.so .
ln -sv /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 .
ln -sv /usr/arm-linux-gnueabihf/lib/ld-linux.so.3 .
ln -sv /usr/arm-linux-gnueabihf/lib/libBrokenLocale.so.1 .
ln -sv /usr/arm-linux-gnueabihf/lib/libanl.so.1 .
ln -sv /usr/arm-linux-gnueabihf/lib/libc.so.6 .
ln -sv /usr/arm-linux-gnueabihf/lib/libdl.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/libm.so.6 .
ln -sv /usr/arm-linux-gnueabihf/lib/libnsl.so.1 .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_compat.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_dns.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_files.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/libnss_hesiod.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/libpthread.so.0 .
ln -sv /usr/arm-linux-gnueabihf/lib/libresolv.so.2 .
ln -sv /usr/arm-linux-gnueabihf/lib/librt.so.1 .
ln -sv /usr/arm-linux-gnueabihf/lib/libthread_db.so.1 .
ln -sv /usr/arm-linux-gnueabihf/lib/libutil.so.1 .

继续报错,有进步

root@debian:/usr/lib# ldd /usr/local/bin/box86 
    不是动态可执行文件
root@debian:/usr/lib# /usr/local/bin/box86 
/usr/local/bin/box86: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
root@debian:/usr/lib# 
 

sudo apt-get install libgcc-s1:armhf

成功解决 aarch64 系统下 box86 “没有那个文件或目录”

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

继续报错

yeqiang@debian:~/Downloads$ BOX86_PATH=/usr/lib/i386-linux-gnu/:/usr/lib/wine/:${WINEPREFIX:-~/.wine}/lib/:${WINEARCH}/lib WINEDEBUG=-all box86 wine WeChatSetup.exe
Box86 with Dynarec v0.3.5 f2496984 built on Jan 12 2024 14:27:10
Error: reading elf header of /usr/bin/wine-stable, trying to launch natively instead
wine: created the configuration directory '/home/yeqiang/.wine'
wine: configuration in L"/home/yeqiang/.wine" has been updated.
yeqiang@debian:~/Downloads$ echo $?
123
yeqiang@debian:~/Downloads$ BOX86_PATH=/usr/lib/i386-linux-gnu/:/usr/lib/wine/:${WINEPREFIX:-~/.wine}/lib/:${WINEARCH}/lib WINEDEBUG=-all box86 wine64 WeChatSetup.exe
Box86 with Dynarec v0.3.5 f2496984 built on Jan 12 2024 14:27:10
Error: reading elf header of /usr/lib/wine/wine64, trying to launch natively instead
yeqiang@debian:~/Downloads$ echo $?
123
 

dpkg --add-architecture i386 && apt-get update && apt-get install wine32

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

yeqiang@debian:~/Downloads$ BOX86_PATH=/usr/lib/i386-linux-gnu/:/usr/lib/iaarch64-linux-gnu:/usr/lib/wine/:${WINEPREFIX:-~/.wine}/lib/:${WINEARCH}/lib WINEDEBUG=-all box86 /usr/lib/wine/wine WeChatSetup.exe
Box86 with Dynarec v0.3.5 f2496984 built on Jan 12 2024 14:27:10
Box86 with Dynarec v0.3.5 f2496984 built on Jan 12 2024 14:27:10
wine: wineserver doesn't support the x86 architecture

yeqiang@debian:~/Downloads$ /usr/lib/wine/wine WeChatSetup.exe
bash: /usr/lib/wine/wine:无法执行二进制文件: 可执行文件格式错误
 

今天就这样吧....

AI资料:

box86 是独立应用还是需要配合wine一起使用?

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

Box86 是一个独立的应用,但它主要用于配合 Wine 使用,以在非 x86 架构(如 ARM)上运行 x86 架构的 Windows 应用程序。Box86 是一个 x86 指令集模拟器,通过翻译 x86 指令到运行平台的原生指令来实现这一目标。

在实践中,用户需要先在他们的 ARM 设备上安装 Wine,然后通过 Box86 来调用 Wine,以便能够在 ARM 设备上运行那些原本为 x86 架构编译的 Windows 应用程序。简而言之,Box86 和 Wine 结合起来形成了一种解决方案,使得可以在非 x86 硬件平台上运行一部分 x86 Windows 应用。

加入我要启动qq.exe,请提供完整的启动指令

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

要在基于 Debian 11 aarch64 架构系统上使用 Wine 和 Box86 启动 QQ.exe,你需要首先确保 Wine 和 Box86 已经正确安装并配置。以下是一个基本的示例流程:

  1. 安装 Wine 和 Box86(如果尚未安装):
 

Sh

sudo apt update
sudo apt install wine64 box86

注意:由于 Debian 11 aarch64 并非原生支持 x86 应用,你可能需要从非官方源或者其他方式安装 Box86。

  1. 获取并解压QQ的Windows安装包,假设你已经将其解压到 /home/yeqiang/downloads/qq,并且 QQ.exe 位于 /home/yeqiang/downloads/qq/qq.exe

  2. 使用 Box86 运行 QQ.exe:

 

Sh

BOX86_PATH=/usr/lib(box86)/lib/:/usr/lib/wine/:${WINEPREFIX:-~/.wine}/lib/:${WINEARCH}/lib WINEDEBUG=-all box86 wine /home/yeqiang/downloads/qq/qq.exe

这里需要注意,Box86 需要正确的路径来找到 Wine 的库文件。WINEPREFIX 是 Wine 的数据目录,默认在用户的家目录下 .wine 文件夹。WINEARCH 指定 Wine 的架构,对于 Box86 应该是 win32 或 win64

由于 Wine on ARM 和 Box86 的支持程度不同,QQ 的运行效果可能受限于 Wine 和 Box86 的兼容性和功能实现。此外,QQ 在国内需要网络环境和特定的登录认证服务,可能还需要额外的配置才能正常使用。实际操作时请根据具体情况和最新版软件的文档进行相应调整。

yeqiang@debian:~/Downloads����/���/�����/���/���86���ℎ:����/���/�����/���/���86:没有那个文件或目录�������@������: /���������file/usr/local/bin/box86bash:file/usr/local/bin/box86:没有那个文件或目录yeqiang@debian: /Downloads file /usr/local/bin/box86 /usr/local/bin/box86: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=34a096196140c154572fbf1e25f42fb1448132a5, for GNU/Linux 3.2.0, with debug_info, not stripped

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

根据你提供的 file 命令输出结果,/usr/local/bin/box86 是一个 ARM 架构的 ELF 可执行文件,特别是一个 32 位小端序(LSB)的 ARM EABI5 版本 1 的可执行文件。它动态链接到了 /lib/ld-linux-armhf.so.3,并且包含调试信息但未剥离符号表。

这意味着 box86 是一个用于在 ARM 架构上运行 x86 32位应用程序的模拟器。在这个实例中,box86 自身是在 ARM 架构上运行的,它可以尝试将 x86 指令转换为 ARM 指令,从而在基于 ARM 的 Debian 系统上运行部分 x86 应用。

请注意,如果你想运行 x86_64(64位)的 Windows 应用,你需要 box64 而不是 box86box64 是对应于 x86_64 模拟的版本。而且,正如之前的回答所述,即便有了 box64,也需要 Wine 来提供 Windows API 的兼容层,并且并非所有的 Windows 应用都能够在这样的情景下顺利运行。

从错误信息上看,box86不能执行是不是因为debian系统缺少了32位库文件支持?

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

从你提供的信息来看,box86 是一个运行在 ARM 架构上的 32 位 ELF 可执行文件,它被设计用来在 ARM 硬件上模拟运行 x86 架构的 32 位应用程序。在 Debian 系统上,如果 box86 不能执行,可能的原因有很多,其中包括但不限于:

  1. 缺少 32 位库文件支持:在 64 位(aarch64)Debian 系统上运行 32 位程序(如 box86)确实需要 32 位库文件支持。如果没有安装 ia32-libs(对于旧版 Debian)或 multiarch 支持及相应的 32 位库,box86 可能无法运行。在 Debian 11 上,可以使用以下命令安装 32 位库支持:
 

Sh

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 lib32gcc-s1 lib32stdc++6
  1. 缺少必要的依赖库:box86 本身也可能需要特定的依赖库才能正常工作。如果 box86 缺少运行时依赖的某个库,那么它将无法执行。

  2. 模块兼容性问题:box86 依赖的动态链接器 /lib/ld-linux-armhf.so.3 在你的系统上可能没有正确安装或不兼容当前系统版本。

  3. box86 本身的错误:如果 box86 本身存在编译或安装错误,或者与当前系统的内核或其他组件不兼容,也可能会导致无法执行。

综上所述,如果 box86 无法执行,首先应该检查是否已经安装了所有必要的 32 位库和依赖项,并且确认动态链接器的存在和兼容性。如果还有问题,建议查阅 box86 的官方文档或社区论坛,以获得更加针对性的解决方案。

yeqiang@debian:~/Downloads$ sudo dpkg --add-architecture i386 sudo apt update sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 lib32gcc-s1 lib32stdc++6 [sudo] yeqiang 的密码: 命中:1 http://mirrors.huaweicloud.com/debian bullseye InRelease 获取:2 http://mirrors.huaweicloud.com/debian bullseye-updates InRelease [44.1 kB] 获取:3 https://mirrors.huaweicloud.com/debian-security bullseye-security InRelease [48.4 kB] 获取:4 http://mirrors.huaweicloud.com/debian bullseye-backports InRelease [49.0 kB] 获取:5 http://mirrors.huaweicloud.com/debian bullseye/main i386 Packages [8,003 kB] 获取:6 https://mirrors.huaweicloud.com/debian-security bullseye-security/main i386 Packages [264 kB] 获取:7 https://mirrors.huaweicloud.com/debian-security bullseye-security/non-free i386 Packages [688 B] 获取:8 http://mirrors.huaweicloud.com/debian bullseye/main i386 Contents (deb) [10.2 MB] 获取:9 http://mirrors.huaweicloud.com/debian bullseye/contrib i386 Packages [45.2 kB]
获取:10 http://mirrors.huaweicloud.com/debian bullseye/contrib i386 Contents (deb) [33.6 kB]
获取:11 http://mirrors.huaweicloud.com/debian bullseye/non-free i386 Packages [78.4 kB]
获取:12 http://mirrors.huaweicloud.com/debian bullseye/non-free i386 Contents (deb) [29.2 kB]
获取:13 http://mirrors.huaweicloud.com/debian bullseye-updates/main i386 Packages [19.3 kB]
获取:14 http://mirrors.huaweicloud.com/debian bullseye-updates/main i386 Contents (deb) [90.0 kB]
获取:15 http://mirrors.huaweicloud.com/debian bullseye-backports/main i386 Packages [398 kB]
获取:16 http://mirrors.huaweicloud.com/debian bullseye-backports/main i386 Contents (deb) [1,216 kB]
获取:17 http://mirrors.huaweicloud.com/debian bullseye-backports/contrib i386 Packages [5,564 B]
获取:18 http://mirrors.huaweicloud.com/debian bullseye-backports/contrib i386 Contents (deb) [17.0 kB]
获取:19 http://mirrors.huaweicloud.com/debian bullseye-backports/non-free i386 Packages [12.5 kB]
获取:20 http://mirrors.huaweicloud.com/debian bullseye-backports/non-free i386 Contents (deb) [6,185 B]
已下载 20.6 MB,耗时 10秒 (2,155 kB/s)
正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成
所有软件包均为最新。 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成
E: 无法定位软件包 lib32gcc-s1 E: 无法定位软件包 lib32stdc++6

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记,debian,box86,aarch64

看起来你的 Debian 系统在默认仓库中没有找到 lib32gcc-s1 和 lib32stdc++6 这两个 32 位版本的库。在 Debian Bullseye 中,通常会使用类似 gcc-10-base:i386 和 libstdc++6:i386 这样的包名代替。

尝试安装以下 32 位兼容库:

 

Sh

sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 gcc-10-base:i386 libstdc++6:i386

请注意,gcc-10-base:i386 和第二个 libstdc++6:i386 可能只需安装一次即可,但如果系统提示你需要哪个版本的 gcc-10-base 或 libstdc++6 的 32 位版本,请按照提示安装相应的版本。

另外,对于较新的 Debian 版本,如果 gcc-10-base:i386 仍然找不到,你可能需要查找对应于你系统上安装的 GCC 版本的 32 位兼容包。你也可以查阅 Debian 官方文档或社区论坛来获取关于在 aarch64 上安装 32 位库的最新指引。文章来源地址https://www.toymoban.com/news/detail-795079.html

到了这里,关于debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Linux、Ubuntu中跨平台编译ARM(AARCH64)平台的binutils

    Binutils 是GNU(https://www.gnu.org/)提供的一组二进制工具的集合。通常,在已经安装了Linux操作系统的个人电脑上,系统就已经自带了这个工具集。但在进行嵌入式开发的时候,可能会用到支持ARM64平台的Binutils,这时就需要用到交叉编译。 此前,在【1】我们已经介绍过Ubuntu中交

    2024年02月05日
    浏览(80)
  • 虚幻引擎UE4源码编译安装(x86,arm64平台)

    (1)关于运行Setup.sh脚本,mono报错,详情截图如下: 分析:不能执行二进制文件mono,根据错误提示找到源码中涉及到具体执行语句为: “mono Engine/Binaries/DotNET/GitDependencies.exe $ARGS”         GitDependencies.exe可执行文件的作用在线下载UE依赖库,而mono是跨平台.net运行环境,

    2024年02月06日
    浏览(94)
  • 【CPU】关于x86、x86_64/x64、amd64和arm64/aarch64

    为什么叫x86和x86_64和AMD64? 为什么大家叫x86为32位系统? 为什么软件版本会注明 for amd64版本,不是intel64呢?     x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,intel官方文档里面

    2024年02月05日
    浏览(60)
  • 服务器基础知识:aarch64 arm64 arm x86有什么区别

    aarch64 和 arm64 是指基于ARM架构的64位处理器,而 arm 是指基于ARM架构的32位处理器。 x86 则是指基于x86架构的处理器。 架构: aarch64 、 arm64 和 arm 都属于ARM架构,而 x86 属于x86架构。 位数: aarch64 和 arm64 是64位处理器架构,能够使用64位的寄存器和指令集。 arm 是32位处理器架构

    2024年02月08日
    浏览(51)
  • (三)基于arm64/aarch64架构的Debian Linux中mysql5.7+详细安装过程

    (一)移动端安卓手机改造成linux服务器Linux中安装软件踩坑历险记 (二)Debian Linux系统中安装oracle JDK1.8详细过程(arm64/aarch64架构下) 在上一篇文章中,主要分享了 改造后的安卓手机Linux系统中 JDK1.8的安装与环境变量配置等内容。本文就 基于arm/aarch64指令集架构的Linux系统中 mysql5

    2024年01月21日
    浏览(54)
  • Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统

    qemu-system-aarch64 启动的虚拟机,无法受到 kvm 的管理,也无法在后台运行 终端一旦断开了,虚拟机就被关掉了,想再次进入目前没找到方法,都会回到安装操作系统的步骤 可能是 centos 有某些特殊性吧,暂时没太多时间研究,后期有时间了再看看有没有解决的方案 qemu-5.2.0 和

    2024年02月06日
    浏览(52)
  • 交叉编译----宿主机x86 ubuntu 64位-目标机ARMv8 aarch64

    1.交叉编译是什么,为什么要交叉编译 编译:在一个平台上生成在该平台上的可执行代码 交叉编译:在一个平台上生成在另一个平台上的可执行代码 交叉编译的例子:如51单片机的可执行代码(hex文件)是在集成环境keil上面编译完成的,我们只需要将编译好的可执行代码下

    2024年02月15日
    浏览(46)
  • Ubuntu20.04_x86交叉编译aarch64版本的tslib1.22步骤

    编译环境:小米笔记本+Windows10+VMware17 +Ubuntu20.04虚拟机 编译目标:需要生成aarch64环境下对应的触摸屏驱动。 编译步骤: 1、下载aarch64-linux-gnu编译器,下载地址为:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.x

    2024年02月16日
    浏览(47)
  • UEFI源码学习01-ARM AARCH64编译、ArmPlatformPriPeiCore(SEC)

    编译完之后会生成UEFI文件: Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd 运行命令如下 大部分教程都是用OVMF来做示例,OVMF中第一个运行的UEFI模块是SEC。但AARCH64中的SEC是这个ArmPlatformPriPeiCore。所以在edk2的AARCH64示例中,ArmPlatformPriPeiCore是第一个运行的模块。 我们用UEFITool NE 打开

    2023年04月08日
    浏览(39)
  • Windows11 上使用 QEMU 创建 Ubuntu aarch64(ARM64)虚拟机

    最近在实现一个混沌测试工具,对汽车上分布式系统执行测试。计划运行在 Linux aarch64 环境,需要确定在目标环境能不能运行,但自己和实验室的电脑都是 x86_64,所以打算建一个虚拟机。 通过 Docker容器或VMware都不支持在 x86_64 宿主机运行 aarch64 容器/虚拟机, Virtual Box 似乎也

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包