FEX-Emu在Debian/Ubuntu系统使用
FEX-Emu在Debian/Ubuntu系统使用
- 1. Debootstrap子系统安装(可选)
- 2. Debian/Ubuntu依赖包安装
- 3. 获取FEX-Emu源码并编译
- 4. 根文件系统RootFS安装
- 5. 基于 FEX-Emu 运行应用
1. Debootstrap子系统安装(可选)
sudo apt-get install debootstrap
sudo debootstrap --arch arm64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/
sudo debootstrap --variant=buildd --arch arm64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/
安装成功后,进入目录切换环境
cd ~/arche/debian
sudo chroot .
2. Debian/Ubuntu依赖包安装
按照官网要求安装全部依赖库:
apt install git cmake ninja-build pkgconf ccache clang llvm lld binfmt-support libsdl2-dev libepoxy-dev libssl-dev python-setuptools g++-x86-64-linux-gnu libgcc-10-dev-i386-cross g++-x86-64-linux-gnu libgcc-10-dev-amd64-cross nasm python3-clang libstdc++-10-dev-i386-cross libstdc++-10-dev-amd64-cross libstdc++-10-dev-arm64-cross squashfs-tools squashfuse libc-bin libc6-dev-i386-amd64-cross lib32stdc++-10-dev-amd64-cross
如果提示找不到包可以配置一下源 /etc/apt/sources.list: (安装成功请略过此步骤)
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://security.debian.org/debian-security bullseye-security main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian bullseye main
更新源后再次安装:(安装成功请略过此步骤)
apt update
3. 获取FEX-Emu源码并编译
在子系统获取代码和子模块:
git clone --recurse-submodules https://github.com/FEX-Emu/FEX.git
编译源码:
cd FEXmkdir Buildcd BuildCC=clang CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_LINKER=lld -DENABLE_LTO=True -DBUILD_TESTS=False -DENABLE_ASSERTIONS=False -G Ninja ..

configure完成后,执行ninja
ninja
我这里会报如下错,可能我安装的libstdc++的版本问题 (没有出错可以略过):
../Source/Tools/pidof/pidof.cpp:56:24: error: no matching constructor for initialization of 'std::istringstream' (aka 'basic_istringstream<char>')
暂时强制改一下代码:
std::istringstream ss{static_cast<std::string>(Omit)};
重新执行,没有错了
CC=clang CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_LINKER=lld -DENABLE_LTO=True -DBUILD_TESTS=False -DENABLE_ASSERTIONS=False -G Ninja ..
执行安装命令:
root@nfs-PC:/FEX/Build# ninja install
[0/2] Re-checking globbed directories...
[0/1] Install the project...
-- Install configuration: "RELEASE"
-- Installing: /usr/share/man/man1/FEX.1.gz
-- Installing: /usr/lib/libFEXCore.a
..........................................
-- Installing: /usr/bin/FEXServer
-- Installing: /usr/bin/FEXBash
-- Installing: /usr/bin/FEXLoader
-- Installing: /usr/bin/FEXInterpreter
-- Installing: /usr/bin/FEXUpdateAOTIRCache
-- Installing: /usr/bin/FEXpidof
-- Installing: /usr/share/fex-emu/AppConfig/client.json
-- Installing: /usr/share/fex-emu/ThunksDB.json
4. 根文件系统RootFS安装
当前的debian系统,默认没有curl,fex工具会用到,因此需要先安装一下:

上述编译并安装完成后可以执行FEXRootFSFetcher来安装RootFS,终端会提示你rootfs没有找到,是否下载, 输入y:

当前验证的机器用的是debian11版本,没有对应的版本,我们就用Ubuntu 20.04

下载完成后、解压配置为默认RootFS:

5. 基于 FEX-Emu 运行应用
直接运行安装目录下的FEXBash命令来启动:

接下来启动一下wine看一下效果,这里我用的是自己编译的wine9.4, 关于如何编译wine可以参照 Wine编译环境搭建及使用完整流程详细笔记
, 会发现有如下错误:

回到宿主机执行一下: xhost + 让其允许子系统使用其显示窗口
xhost +
access control disabled, clients can connect from any host
回到FEXBash-root中再次启动
FEXBash-root@nfs-PC:/home> ./install/opt/winux/wine9.4/usr/local/bin/winecfg
可以看到如下效果:

/home/install/opt/winux/wine9.4/usr/local/bin/wine notepad

相关文章:
FEX-Emu在Debian/Ubuntu系统使用
FEX-Emu在Debian/Ubuntu系统使用 1. Debootstrap子系统安装(可选)2. Debian/Ubuntu依赖包安装3. 获取FEX-Emu源码并编译4. 根文件系统RootFS安装5. 基于 FEX-Emu 运行应用 1. Debootstrap子系统安装(可选) sudo apt-get install …...
docker 不同架构镜像融合问题解决
1、背景 docker 作为目前容器的标准之一,但是对于多种架构的平台的混合编译支撑不是很好。因此衍生了镜像融合,分别将多种不同的架构构建好,然后将镜像进行融合上传。拉取镜像的会根据当前系统的架构拉取不同的镜像,也可以通过 -…...
windows_anaconda 安装pytorch
查看CUDA版本 cmd nvidia-smi # NVIDIA-SMI 546.56 Driver Version: 546.56 CUDA Version: 12.3nvcc --version # nvcc: NVIDIA (R) Cuda compiler driver # Copyright (c) 2005-2023 NVIDIA Corporation # Built on Wed_Nov_22_10:30:42_Pacific_Standard_Time_2023 # C…...
IP SSL证书注册流程
使用IP地址申请SSL证书,需要用公网IP地址申请,申请之前确保直接的IP地址可以开放80或者443端口两者选择1个就好,端口不需要一直开放,只要认证的几分钟内开放就可以了,然后IP地址根目录可以上传txt文件。 IP SSL证书认…...
shentou思路流程
信息收集: 1、获取域名whois信息也就是所谓的资产收集 2、服务器子域名、旁站、c段查询 3、服务器操作系统类型、版本、补丁状况、开放端口:22 ssh 80 web 445 3389.。。 4、web中间件类型、版本、网站目录结构、使用的waf等设备 5、数据库类型、版…...
航空实时监控
1、从Kafka中读取飞机数据,并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成,请参考源代码自行完成。核心类主要有三个:SparkStreamingApplication类、SparkUtil类和MapManager类…...
第十四届蓝桥杯JavaB组省赛真题 - 幸运数字
进制转换可以参考如下的十进制,基本一样的,只是把10变成了其他数字, sum就是各个数位之和 public static int myUtil(int n) {int sum 0;while(n > 0) {sum n % 10;n / 10;}return sum;} 注意: 如果写在同一个类里面&…...
【练习】双指针算法思想
🎥 个人主页:Dikz12🔥个人专栏:Java算法📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 1. 移动零 1.1 题目描述 1.2 讲解算法原理 1.3 编…...
Leetcode 20. 有效的括号
心路历程: 看到括号问题直接想到栈,但是纠结了一下题目中给出的 ‘2. 左括号必须以正确的顺序闭合’ 这一约束,其实这句话的意思简化了题目要求,[(])这样的字符串就不满足要求了。 注意的点: 1、注意最后需要栈为空…...
jupyter | mac jupyter快捷键
【ctrlenter】:是运行选中的单元格,他会停留在此 > 执行 【optionenter】:是运行单元格并且在下面插入一个新的单元格 > 执行 【shiftenter】:是 运行单元格, 并选择下面的单元格 > 执行 【Tab】键用来代码补全 【A】键…...
么样才能用最便捷的方式为Mac提速呢?
Mac是现代人日常工作时必不可少的工具,尤其是在居家办公已经屡见不鲜的当下。视频会议、文档传送、视频剪辑等等。它在工作中扮演的角色越来越重要,所以也导致了它的流畅程度可以在很大程度上影响人们一整天的工作效率和心情。 但是影响Mac的运行和响应速…...
专业前沿问题问答合集10-2——比特币的加密原理
专业前沿问题问答合集10-2——比特币的加密原理 比特币的加密原理 比特币作为一种加密货币,其安全性和功能性主要基于密码学原理和区块链技术。以下是比特币加密原理的关键组成部分: 1. 非对称加密(公钥和私钥) 比特币使用非对称加密技术来确保交易的安全性。每个比特币…...
C++中的流
前言 在 C 中,流(stream)是一种数据传输的抽象概念,用于在程序中对输入和输出进行操作。流分为输入流和输出流,允许数据在程序和外部设备(如键盘、屏幕、文件)之间进行传输。输入流用于从外部获…...
解决vue3中使用v-html,click不生效的问题
问题背景 说明: 前端接收到来自后端的一个长字符串,要求把里面的图片替换成为超链接,并且要通过请求一个接口进行图片下载。 举例说明 就是下列这样的一个字符串:vaddssss[图片](image_p0_f0.png)dsatewafdsaa[图片](image_p1…...
macOS下Java应用的打包和安装程序制作
文章目录 macOS应用程序结构Java应用打包JavaAppLauncherjpackage其它相关JDK命令附录JavaAppLauncher源码链接macOS应用程序结构 macOS通常以dmg或pkg作为软件发行包,安装到/Applications下后,结构比较统一。 info.plist里的CFBundleExecutable字段可以指定入口,如果不指定…...
OpenAI GPT商店面临质量与合规问题;黄仁勋预测:十年内AI将实时生成游戏画面
🦉 AI新闻 🚀 OpenAI GPT商店面临质量与合规问题 摘要:OpenAI旗下的GPT商店因存在大量涉嫌侵权内容、助长学术不诚实行为及违规内容等问题而引起关注。其中包括未经授权使用迪士尼、漫威角色生成内容的GPT模型,以及声称能绕过剽…...
前端根据pdf连接点击下载pdf而不是直接打开
参考地址: https://www.cnblogs.com/jackson-yqj/p/11321275.html /*** 文件链接转文件流下载--主要针对pdf 解决谷歌浏览器a标签下载pdf直接打开的问题* param url :文件链接* param fileName :文件名;* param type :文件类型;*/functio…...
pytorch中的gather函数的定义和作用是什么?
在PyTorch中,gather函数是一个用于从张量(tensor)中收集特定索引位置上的元素的函数。它主要用于高级索引和从张量中提取特定信息。 定义(python) gather函数的基本定义如下: torch.gather(input, dim, i…...
[ABC206E] Divide Both 解题记录
[ABC206E] Divide Both 解题记录 题意简述 给定整数 L , R L,R L,R,求满足以下条件的数对 ( x , y ) (x,y) (x,y) 的数量。 x , y x,y x,y 不互质 x ∤ y x \nmid y x∤y 且 y ∤ x y \nmid x y∤x 题目分析 正难则反,考虑用所有的满足第一条性质的…...
常见的服务器技术和服务器技术的重要性
服务器技术是指一系列用于构建、维护和管理服务器的技术和工具,旨在确保服务器能够高效、稳定、安全地运行,以满足客户端的请求并提供各种服务。它涵盖了服务器硬件、操作系统、网络协议、数据存储和安全等多个方面的知识和技能。今天,德迅云…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
