【虚拟化qemu】(一)--- qemu 虚拟化软件介绍与安装


【虚拟化qemu】(一)— qemu 虚拟化软件介绍与安装


本文主要用于记录关于 qemu 虚拟化软件的介绍和安装。

关于 qemu

qemu(quick emulator)是一款可执行硬件虚拟化的(hardware virtualization)开源仿真器(Emulator)。

对于 qemu 的介绍可以查看该关于 qemu 的 wiki 词条链接

QEMU 可以做些什么

于嵌入式行业 qemu 可以帮助开发者:学习裸机编程,RTOS 的编程,网络协议的学习,图形界面的学习。使用 qemu 确实能够在一定程度上节省时间,提高软件调试与分析的效率。

用软件模拟硬件的操作行为,本质上来说和实际的硬件操作区别不大,因为在嵌入式编程中,最底层的指令集的行为已经在 qemu 中实现的很好了,硬件模拟方面,qemu 也大致能够模拟操作寄存器后,处理器的行为,这些在对 qemu 的底层支持和学习的过程中已经进行了大量的实验和研究。

理解 qemu 的使用,会对嵌入式软件原理有着更加深刻的理解,从更大的层面上来说,虚拟化的行为本来就是一种很好的解决方案,去设计一个嵌入式软件方案,去演示一个底层软件,或者节约下载调试时间,开发嵌入式上层业务系统软件的功能层面来说,qemu 都是值得去研究和使用的工具。

参考嵌入式编程中使用 qemu 能够做什么?

QEMU 的安装

关于 qemu 的安装官方提供有两种安装方式:

  1. 源码编译安装。
  2. 使用包管理进行安装。

详情参考官方网站的 qemu 下载详情页

宿主机环境:

本机安装环境为 mac 系统的 Ubuntu 20.04.5 LTS 虚拟机,宿主机环境如下:

配置项配置名称
Operating SystemUbuntu 20.04.5 LTS
KernelLinux 5.15.0-46-generic
Architecturex86-64
Virtualizationkvm
ProcessorIntel® Core™ i7-9750H CPU @ 2.60GHz × 2
Graphicsvirgl (Intel® UHD Graphics 630 (Compat))
Memory1.9 GiB
Disk Capacity68.7 GB

源码编译安装:

To download and build QEMU 7.1.0-rc4:

wget https://download.qemu.org/qemu-7.1.0-rc4.tar.xz
tar xvJf qemu-7.1.0-rc4.tar.xz
cd qemu-7.1.0-rc4
./configure
make
make install

编译安装异常处理:

缺少 Ninja 工具

cs@ubuntu:~/Desktop/workspace/qemu-7.1.0-rc3**$ ./configure
Using './build' as the directory for build output
ERROR: Cannot find Ninja

使用以下指令:

sudo apt-get install ninja-build##使用该指令安装Ninja工具

缺少 glib 开发工具库

cs@ubuntu:~/Desktop/workspace/qemu-7.1.0-rc3$ ./configure
Using './build' as the directory for build output
ERROR: glib-2.56 gthread-2.0 is required to compile QEMU

使用以下指令:

sudo apt-get install libglib2.0-dev##使用该指令安装glib工具

缺少 pixman-1 运行时依赖库

Run-time dependency pixman-1 found: NO (tried pkgconfig)

../meson.build:522:2: ERROR: Dependency "pixman-1" not found, tried pkgconfig
A full log can be found at /home/cs/Desktop/workspace/qemu-7.1.0-rc3/build/meson-logs/meson-log.txt

ERROR: meson setup failed

使用以下指令:

sudo apt-get install libpixman-1-dev##使用该指令安装pixman-1运行时依赖库

编译过程中会遇到一些问题,大多是一些库和包找不到的情况,具体的可以参考 CSDN-BLOG-LinuxOS 学习 qemu

验证:

安装完成后可以使用 qemu 工具查看工具版本号进行验证安装成功

cs@ubuntu:~$ qemu-arm -version

qemu-arm version 7.0.93

Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers

小结:

编译过程中,因为未设置编译选项,所以对所有的平台系统进行了编译,编译时间有点长所以可以耐心等待。

参考文档

感悟

相逢恨晚,心疼当年为了学习而花钱买的板子,进阶学习要板子,基础学习还是模拟的就够用了

<think>好的,用户想在R语言中实现类似ExcelVLOOKUP功能,匹配两个Excel格的内容,并且希望使用dplyr和tidyr包的示例代码。首先,我需要回想一下在R中如何进行数据合并,特别是类似VLOOKUP的操作。 VLOOKUPExcel中主要是根据一个键值在另一个格中查找对应的值。在R中,通常使用合并(join)操作来实现类似功能。dplyr包提供了多种合并函数,比如left_join、inner_join等,这些应该能满足需求。用户提到了dplyr和tidyr,可能需要确认这两个包中哪个更合适,不过tidyr主要用于数据重塑,合并操作主要在dplyr里。 接下来,用户需要示例代码。首先,应该加载必要的包,比如dplyr和readxl(用于读取Excel文件)。然后读取两个Excel格的数据,假设为df1和df2。接着使用left_join来合并数据,类似于VLOOKUP的功能,保留左边格的所有行,即使没有匹配到右边的数据。 需要注意的是,合并的键可能在两个格中的列名不同,比如df1的ID和df2的ID列名是否一致。如果不一致,需要在by参数中指定,比如by = c("ID" = "ID2")。此外,合并后的结果可能需要处理重复列名的问题,比如添加后缀,但dplyr的left_join默认会自动处理。 另外,用户可能希望了解不同合并类型的区别,比如left_join和inner_join的区别,是否需要所有匹配或保留所有左侧数据。可能需要简单说明几种常见的合并方式,以及适用场景。 然后,考虑到用户可能对R不熟悉,代码示例需要清晰,步骤明确。包括安装和加载包、读取数据、执行合并、保存结果等步骤。同时提醒可能的常见问题,比如列名不一致、数据类型的匹配等。 最后,生成相关问题,可能涉及其他合并方式、处理重复键、性能优化等,这些能帮助用户进一步学习。</think>在R语言中实现类似ExcelVLOOKUP功能,可以使用`dplyr`包的`left_join()`函数结合`readxl`包进行Excel文件读取。以下是分步实现方法: ### 1. 安装并加载必要包 ```r install.packages(c("dplyr", "readxl", "tidyr")) # 首次使用需安装 library(dplyr) library(readxl) ``` ### 2. 读取Excel文件 假设需要匹配主`data1.xlsx`和参考`data2.xlsx` ```r # 读取主(需要补充信息的格) df_main <- read_excel("data1.xlsx", sheet = 1) # 读取参考(包含匹配信息的格) df_ref <- read_excel("data2.xlsx", sheet = 1) ``` ### 3. 执行VLOOKUP式匹配 ```r # 通过共同字段"ID"进行左连接 result <- df_main %>% left_join(df_ref, by = "ID", suffix = c("_main", "_ref")) ``` ### 4. 查看匹配结果 ```r # 显示前6行数据 head(result) # 保存结果到新Excel文件 writexl::write_xlsx(result, "merged_data.xlsx") ``` ### 典型应用场景示例 假设`df_main`包含客户订单号,`df_ref`包含订单号对应的产品价格: $$ \text{df\_main} = \begin{bmatrix} \text{订单号} & \text{数量} \\ A001 & 2 \\ A002 & 3 \end{bmatrix}, \quad \text{df\_ref} = \begin{bmatrix} \text{订单号} & \text{单价} \\ A001 & 50 \\ A002 & 80 \end{bmatrix} $$ 合并后将新增单价列: ```r 订单号 数量 单价 A001 2 50 A002 3 80 ``` ### 注意事项 1. 合并字段类型必须一致(同为字符型或数值型) 2. 使用`na.omit()`处理缺失值 3. 使用`select()`筛选所需字段 4. 多条件匹配可设置`by = c("字段1", "字段2")`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值