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

news2024/9/29 17:38:01

参考资料

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

安装wine64

sudo apt install wine64

安装微信(失败)

编译出来的目标文件是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

启动exe失败

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

但是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 “没有那个文件或目录”

继续报错

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

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一起使用?

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 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

根据你提供的 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位库文件支持?

从你提供的信息来看,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 系统在默认仓库中没有找到 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 位库的最新指引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1379058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两个阅读英文论文的免费AI工具

大家好啊,我是董董灿。 本文会介绍我平时用到的两个免费的基于GPT的论文阅读平台,很好用,对于有英文阅读困难症的小伙伴(比如我)是真的提效。 1、 英文阅读困难症 在我的工作以及业余学习中,会时不时的需要翻看一些英文论文&…

GitLab任意用户密码重置漏洞(CVE-2023-7028)

GitLab CVE-2023-7028 POC user[email][]validemail.com&user[email][]attackeremail.com 本文链接: https://www.黑客.wang/wen/47.html

JavaScript保留字和预定义的全局变量及函数汇总

保留字也称关键字,每种语言中都有该语言本身规定的一些关键字,这些关键字都是该语言的语法实现基础,JavaScript中规定了一些标识符作为现行版本的关键字或者将来版本中可能会用到的关键字,所以当我们定义标识符时就不能使用这些关…

【Git】本地仓库文件的创建、修改和删除

目录 一、基本信息设置 1、设置用户名2、设置用户名邮箱 二、Git仓库操作介绍 1、创建一个新的文件夹2、在文件内初始化git仓库(创建git仓库)3、向仓库中添加文件 1.创建一个文件2.将文件添加到暂存区3.将暂存区添加到仓库 4、修改仓库文件 1.修改文件2.…

汽车级线性电压稳压器LM317MBSTT3G:新能源汽车的理想之选

LM317MBSTT3G是一款可调三端子正向线性稳压器,能够在 1.2 V 至 37 V 的输出电压范围内提供 500 mA 以上的电流。此线性电压稳压器使用非常简便,仅需两个外部电阻即可设置输出电压。另外,它采用内部电流限制、高温关断和安全区域补偿&#xff…

边缘计算:连接实时数据的力量与未来发展之路

边缘计算是一种分布式计算范式,它旨在将数据处理、存储和应用服务带到数据源的近端,即网络的“边缘”。在边缘计算模型中,算力和存储资源距离末端用户或数据源更近,这减少了数据在网络中传输的距离,从而降低延迟&#…

【Web】token机制

🍎个人博客:个人主页 🏆个人专栏:Web ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 机制基本: 优势: 结语 我的其他博客 前言 在当今互联网时代,安全、高效的用户身份验证和资源授…

关于Python里xlwings库对Excel表格的操作(三十二)

这篇小笔记主要记录如何【如何使用“Chart类”、“Api类"和“Axes函数”设置坐标轴标题文本内容】。 前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库…

Sip - Ubuntu 配置 miniSIPServer 服务器(测试用)

客户提供的账号过期了,简单搭建 SIP 服务器,以便测试使用。个人认为这个配置起来最为简单,且测试功能足够。 官网miniSIPServer - 基于 Windows 以及 Linux 平台的 VoIP (SIP) 服务器软件. miniSIPServer 可能是最容易使用的 VoIP(SIP) 服务器…

【国产mcu填坑篇】华大单片机(小华半导体)一、SPI的DMA应用(发送主机)HC32L136

最近需要用华大的hc32l136的硬件SPIDMA传输,瞎写很久没调好,看参考手册,瞎碰一天搞通了。。。 先说下我之前犯的错误,也是最宝贵的经验,供参考 没多看参考手册直接写(即使有点烂仍然提供了最高的参考价值。…

基于STM32和ESP8266的物联网应用开发与实现

基于STM32和ESP8266的物联网应用开发与实现可以实现智能家居、智能工业、环境监测等多种应用,它将结合STM32微控制器的实时控制能力和ESP8266无线通信模块的WiFi连接能力。在本文中,我们将介绍如何设计和实现这样的物联网应用,并提供相关的代…

2024年AMC8往年真题练一练和答案详解(6),还有全真模拟题

今天是1月13日,2024年AMC8正式比赛已经倒计时了,昨天AMC主办方给所有参赛选手发了短信通知,关于模拟竞赛的操作方式和实际比赛的要求指南,大家一定要认真阅读,严格按指南操作,六分成长也会详细为大家解读和…

SQL Server的彻底卸载的方式

这篇文章主要介绍了SQL Server的彻底卸载的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 SQL Server的彻底卸载与再次安装 可能大家已经有深刻体会,SQL Server的卸载十分繁琐。最让人头…

Web3的应用发展及其影响

Web3,又被称为去中心化Web,是互联网发展的一个阶段,其核心特点是数据的去中心化和用户自主权。近年来,随着区块链技术的不断成熟,Web3的应用也得到了广泛的关注和发展。在这篇文章中,我们将深入探讨Web3目前…

sqlilabs第五十一五十二关

Less-51(GET - Error based - ORDER BY CLAUSE-String- Stacked injection) 手工注入 源码 单引号闭合用注释(没有后续输出只能堆叠注入) 自动注入 和上一关一样 Less-52(GET - Bind based - ORDER BY CLAUSE-numeric- Stacked injection) 手工注入 数字类型 不用注释直接…

uniapp小程序当页面内容超出时显示滚动条,不超出时不显示---样式自定义

使用scroll-view中的show-scrollbar属性 注意:需要搭配enhanced使用 否则无效 <scroll-view class"contentshow" scroll-y :show-scrollbartrue :enhancedtrue><view class"content" :show-scrollbartrue><text>{{vehicleCartinfo}}<…

[机缘参悟-125] :实修 - “心性、自性”与“知识、技能”的区别,学习、修、悟的区别?

目录 一、“知识、技能” 1.1 什么是知识技能 1.2 知识、技能的位置 1.3 知识、技能的学习方法 二、"明心见性" 2.1 什么是"明心见性" 2.2 "明心见性"解读 2.2.1 何其自性&#xff0c;本自清净&#xff1b; 2.2.2 何其自性&#xff0c;…

2-Linux-应用-部署icwp-Linux虚拟机【Django+Vue+Nginx+uwsgi+Linux】

本文概述 本文章讲述基于Linux CentOS 7系统&#xff08;虚拟机&#xff09;&#xff0c;部署DjangoVue开发的前后端分离项目。 项目源码不开放&#xff0c;但是操作步骤可以借鉴。 该文章将项目部署在Linux虚拟机上&#xff0c;暂不使用Docker 相关指令尽量展示执行路径&am…

什么是网络数据抓取?有什么好用的数据抓取工具?

一、什么是网络数据抓取 网络数据抓取&#xff08;Web Scraping&#xff09;是指采用技术手段从大量网页中提取结构化和非结构化信息&#xff0c;按照一定规则和筛选标准进行数据处理&#xff0c;并保存到结构化数据库中的过程。目前网络数据抓取采用的技术主要是对垂直搜索引…

FineBI实战项目一(22):各省份订单个数及订单总额分析开发

点击新建组件&#xff0c;创建各省份订单个数及订单总额组件。 选择自定义图表&#xff0c;将province拖拽到横轴&#xff0c;将cnt和total拖拽到纵轴。 调节纵轴的为指标并列。 修改横轴和纵轴的标题。 修改柱状图样式&#xff1a; 将组件拖拽到仪表板。 结果如下&#xff1a;…