如果盗用网站模板/互换链接的方法

如果盗用网站模板,互换链接的方法,网页打不开qq能上,wordpress在线考试插件文章目录 获取xv6源代码Ubuntu20.04 Version安装指令成功测试参考MIT2021年官方文档 24.04 Version安装指令成功测试参考MIT2024年官方文档 Ubuntu 22.04没有官方文档? 配置大体流程1. 卸载原本qemu(如果之前安装了)2. clone qemu官方源代码&…

文章目录

  • 获取xv6源代码
  • Ubuntu
    • 20.04 Version
      • 安装指令
      • 成功测试
      • 参考MIT2021年官方文档
    • 24.04 Version
      • 安装指令
      • 成功测试
      • 参考MIT2024年官方文档
  • Ubuntu 22.04
      • 没有官方文档?
    • 配置大体流程
      • 1. 卸载原本qemu(如果之前安装了)
      • 2. clone qemu官方源代码,切换到stable 7.2 version
      • 3. configure
      • 4. make 并 install
      • 5. 删除下载的qemu项目
  • 心酸历程
    • 能不能用24.04的Qemu?
  • 更多
    • 三种riscv-gcc的应用场景与区别
      • 能不能在wsl下使用?
        • riscv64-linux-gnu-gcc
        • riscv64-unknown-elf-gcc
        • riscv64-unknown-linux-gnu-gcc
    • 配置环境项讲解
      • 1. git
      • 2. build-essential
      • 3. gdb-multiarch
      • 4. qemu-system-misc
      • 5. gcc-riscv64-linux-gnu
      • 6. binutils-riscv64-linux-gnu
      • 总结
    • 自己安装的qemu和apt安装的有什么区别
      • 1. 版本差异
      • 2. 编译选项
      • 3. 安装路径
      • 4. 依赖管理
      • 5. 更新与维护
      • 6. 兼容性

获取xv6源代码

git clone https://github.com/mit-pdos/xv6-riscv.git
cd xv6-riscv #视下载后项目文件而定,可能在更多层中

下载好并正确进入OS源代码所在文件夹后,结构应该为

请添加图片描述

Ubuntu

20.04 Version

最终环境:QEMU 5.1+, GDB 8.3+, GCC, and Binutils.

安装指令

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

成功测试

# in the xv6 directory
$ make qemu
# ... lots of output ... 最终显示
init: starting sh
$

如果没有成功,可以检查下面环境

$ qemu-system-riscv64 --version
QEMU emulator version 5.1.0

至少一个以下GCC版本

$ riscv64-linux-gnu-gcc --version
riscv64-linux-gnu-gcc (Debian 10.3.0-8) 10.3.0
...
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.1.0
...
$ riscv64-unknown-linux-gnu-gcc --version
riscv64-unknown-linux-gnu-gcc (GCC) 10.1.0
...

参考MIT2021年官方文档

6.S081 / Fall 2021

24.04 Version

最终环境:RISC-V versions of QEMU 7.2+, GDB 8.3+, GCC, and Binutils.

安装指令

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

成功测试

# in the xv6 directory
$ make qemu
# ... lots of output ...
init: starting sh
$

如果没有成功,可以检查下面环境

$ qemu-system-riscv64 --version
QEMU emulator version 7.2.0

至少一个以下GCC版本

$ riscv64-linux-gnu-gcc --version
riscv64-linux-gnu-gcc (Debian 10.3.0-8) 10.3.0
...
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.1.0
...
$ riscv64-unknown-linux-gnu-gcc --version
riscv64-unknown-linux-gnu-gcc (GCC) 10.1.0
...

参考MIT2024年官方文档

6.1810 / Fall 2024

Ubuntu 22.04

有人又要说了,博主博主这不是CV官方文档吗。这也可以水一篇博客,强烈谴责!

也有人就要问了,主播主播,20.04和24.04版本的配置环境太没有含金量了,有没有什么又没有什么博客指引,也没有官方文档的版本?

有的,兄弟,有的。像这样的牢版本还有2(jiǔ)个……其中一个便是咱们的22.04,高贵的Jammy玩家

没有官方文档?

20年没有wsl版本,21~23年是20.04的天下,24年终于更新了……是24.04(Jammy玩家悬着的心还是死了)

不过以下指令还是要先执行的

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git build-essential gdb-multiarch binutils-riscv64-linux-gnu

配置大体流程

  1. 卸载原先qemu
  2. clone qemu官方源代码,切换到stable 7.2 version
  3. configure
  4. make 并 install

1. 卸载原本qemu(如果之前安装了)

22.04版本使用 apt install 直接安装的版本是 6.2.0
请添加图片描述

由于不知名原因,这个qemu并无法直接使用。会出现执行 make qemu 到一半卡住无反馈的情况

请添加图片描述

我当时还寻思着怎么启动个系统这么久……

此时有两个选择,一是使用老版本qemu(5.1),二是使用新版本qemu(7.2)。由于官方已更新,所以我们选择后者。

使用apt移除qemu

sudo apt remove --purge qemu qemu-system qemu-utils qemu-system-* -y

清理残留文件

sudo apt autoremove -y
sudo apt autoclean

检查是否仍然存在 QEMU

qemu-system-riscv64 --version

如果命令返回 “command not found”,说明 QEMU 已成功卸载。

2. clone qemu官方源代码,切换到stable 7.2 version

git clone https://gitlab.com/qemu-project/qemu.git
cd ./qemu
git checkout stable-7.2

注意:这里没有用到最新版(学都是学最新的,用都是用最老的~~~)

3. configure

cd qemu/
mkdir build
cd build/
../configure --target-list=x86_64-softmmu,riscv64-softmmu --enable-debug

注意这里我们只make了x86_64和riscv-64版本并且之后安装到/usr/local下。此时调用项目中可执行文件configure为make作准备。

出现 ERROR: Cannot find Ninja

执行命令

sudo apt install ninja-build

出现 ERROR: glib-2.56 gthread-2.0 is required to compile QEMU

执行命令

sudo apt install libglib2.0-dev

之后想要将qemu安装到/usr而非/usr/local下(不推荐,可能会和系统自带包管理器相冲突)

将原本configure指令替换为

../configure --target-list=x86_64-softmmu,riscv64-softmmu --enable-debug --prefix=/usr

成功configure之后显示
请添加图片描述
后面还有很多参数,没有截全

4. make 并 install

make -j$(nproc)
sudo make install

make过程可能会持续几分钟,因机而异

完成后尝试

qemu-system-riscv64 --version

如果正常输出则ok,如果没有找到则需要将 /usr/local 也添加到 PATH

尝试

 export PATH=/usr/local/bin:$PATHqemu-system-riscv64 --version

如果正常输出则将该路径添加到配置文件的PATH中

echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

如果,不出意外的话。此时回到 xv6-riscv 目录便可以执行 make qemu
请添加图片描述

5. 删除下载的qemu项目

如果之后不打算make其他架构的硬件模拟,此时便可以把下载的qemu源代码文件夹删除了

sudo rm -rf ./qemu

心酸历程

能不能用24.04的Qemu?

你可真是个小天才,借腹生子是吧!!!

警告:以下命令不要随便执行

sudo add-apt-repository ppa:jacob/virtualisation -y
sudo apt update
sudo apt install qemu-system-riscv64 -y

运行之后再去试试 make qemu ,结果能执行了!!!然后发现你的 gdb 就神奇的不见了……
请添加图片描述

原因就是你安装高版本的 qemu-system 时安装了覆盖一些依赖,此时便将冲突的gdb给卸载了。仔细检查 sudo apt install qemu-system-riscv64 -y 的输出日志可以发现信息

The following packages will be REMOVED:debhelper debugedit gdb gdb-multiarch ...

sad~~~天地好轮回,苍天饶过谁

这个教训告诉我们,以后在看到有哪篇博客里存在指令 apt *** -y-y 结尾,基本可以拖出去斩了(bushi)

后面就因为这个事情导致22.04版本的一些依赖变成了24.04,这个做法实在是个烂主意!

请添加图片描述

原以为22.04玩家已经是最牢的,没想到b站上还有更牢的18.04玩家(bushi)

立创泰山派训练营学习笔记–Ubuntu22.04.4 rootfs根文件系统制作-Linux SDK编译(二)

更多

三种riscv-gcc的应用场景与区别

编译器适用场景目标架构典型应用是否支持标准 C 库
riscv64-linux-gnu-gccLinux 用户空间riscv64-linux-gnu编译 RISC-V Linux 应用程序✅ (glibc)
riscv64-unknown-elf-gcc裸机 / RTOS / OS 内核riscv64-unknown-elf编译 xv6、U-Boot、裸机程序❌(无操作系统支持)
riscv64-unknown-linux-gnu-gccLinux 用户空间riscv64-unknown-linux-gnu交叉编译 Linux 程序(可能使用 musl)✅ (glibcmusl)
  • 如果你在开发 Linux 用户空间应用(如普通软件)
    → 用 riscv64-linux-gnu-gccriscv64-unknown-linux-gnu-gcc
  • 如果你在开发 RISC-V 操作系统或裸机程序(如 Bootloader、xv6
    → 用 riscv64-unknown-elf-gcc
  • 如果你不确定,但目标是在 RISC-V Linux 运行
    → 用 riscv64-linux-gnu-gcc

能不能在wsl下使用?

riscv64-linux-gnu-gcc

请添加图片描述

情况:可以编译成功但是无法执行

这个gcc最终编译的二进制文件针对的是RISCV架构,所以无法在一般的x86-64架构上直接执行。而xv6-riscv是通过qemu模拟riscv硬件才能够执行

riscv64-unknown-elf-gcc

请添加图片描述

情况:连编译都编译不过去了

riscv64-unknown-elf-gcc 针对的是裸机环境,那么包没有 <stdoi.h> 的。所以确实无法编译

riscv64-unknown-linux-gnu-gcc

没下……

配置环境项讲解

MIT的 apt-get install 命令安装了以下几个关键的软件包,主要用于在 WSL2 的 Ubuntu 22.04 上配置 xv6(一个 RISC-V 架构的类 Unix 操作系统)的开发和调试环境。


1. git

  • 作用:Git 版本控制系统,用于下载 xv6 源码,并进行代码管理(如克隆、提交和更新)。
  • xv6 相关性:从 GitHub 上克隆 xv6 源代码,例如:
    git clone https://github.com/mit-pdos/xv6-riscv.git
    

2. build-essential

  • 作用:提供了一组基本的编译工具,包括 gccg++make 等。
  • xv6 相关性
    • xv6 使用 make 进行编译,依赖 gcc 进行 C 语言编译。
    • build-essential 里包含 make,而 xv6 的 Makefile 需要 make 来组织编译流程。

3. gdb-multiarch

  • 作用:支持多架构的 GNU 调试器(GDB),可用于调试不同 CPU 指令集(如 x86、ARM、RISC-V 等)的程序。
  • xv6 相关性
    • xv6 运行在 RISC-V 上,因此需要一个支持 RISC-V 的 GDB 进行调试。
    • 可以用它远程调试 QEMU 模拟器运行的 xv6:
      gdb-multiarch
      (gdb) target remote localhost:1234
      

4. qemu-system-misc

  • 作用:QEMU 是一个通用的CPU 模拟器,qemu-system-misc 包含对多个架构的 QEMU 模拟支持。
  • xv6 相关性
    • xv6 需要 QEMU 来模拟 RISC-V 硬件环境
    • 通常用如下命令运行 xv6:
      make qemu
      

5. gcc-riscv64-linux-gnu

  • 作用:RISC-V 交叉编译器,可以编译 RISC-V 目标平台的代码
  • xv6 相关性
    • xv6 运行在 RISC-V 上,而你的开发环境是 x86_64,因此需要交叉编译器编译 RISC-V 代码。
    • 可以用它手动编译 xv6 代码:
      riscv64-linux-gnu-gcc -o hello hello.c
      

6. binutils-riscv64-linux-gnu

  • 作用:RISC-V 目标平台的 GNU binutils 工具集,包括 as(汇编器)、ld(链接器)等。
  • xv6 相关性
    • xv6 需要 as 来编译汇编代码。
    • ld 用于链接最终的 xv6 可执行文件。

总结

软件包作用在 xv6 中的用途
git版本控制克隆 xv6 源码
build-essentialC/C++ 编译工具编译 xv6
gdb-multiarch多架构调试调试 xv6
qemu-system-miscCPU 模拟器运行 xv6
gcc-riscv64-linux-gnu交叉编译编译 RISC-V 代码
binutils-riscv64-linux-gnu汇编/链接工具处理 RISC-V 汇编和链接

自己安装的qemu和apt安装的有什么区别

1. 版本差异

apt 安装:Ubuntu 官方软件源提供的 QEMU 可能是稳定版,但版本较老/或太新,可能缺少一些新功能或优化。
自己编译:可以选择最新的源码,获取最新功能、修复的 bug 和性能优化。

2. 编译选项

apt 安装:使用的是 Ubuntu 维护者编译的二进制文件,默认开启了一些常见的功能,但可能未启用所有选项。
自己编译:可以根据需求启用或禁用特定功能,例如:

  • 仅编译支持特定架构(如 --target-list=riscv64-softmmu
  • 选择特定的加速选项(如 --enable-kvm--enable-tcg
  • 进行特定优化(如 --enable-lto 进行链接时优化)

3. 安装路径

apt 安装:QEMU 会被安装到系统路径(如 /usr/bin/qemu-system-*
自己编译
默认安装在 ·/usr/local/bin·,不会影响系统自带的 QEMU
可以自定义安装路径(如 ./configure --prefix=/opt/qemu
安装路径在 configure 之后的报告里有,如果保存了源代码build文件夹还可以执行 sudo make uninstall 进行卸载

4. 依赖管理

apt 安装:自动处理依赖关系,安装/卸载时不容易出问题。
自己编译:需要手动安装依赖(如 libglib2.0-dev、libpixman-1-dev),可能会遇到缺少库或不兼容的问题。

5. 更新与维护

apt 安装:系统更新时可以自动升级(sudo apt upgrade)。
自己编译:需要手动拉取源码并重新编译安装,维护成本更高。

6. 兼容性

apt 安装:官方软件源提供的版本经过测试,与 Ubuntu 其他软件兼容性较好。
自己编译:如果使用了非官方补丁或特定配置,可能会遇到不兼容问题,例如影响 gdb、libvirt、kvm 相关组件的使用。

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

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

相关文章

无人机点对点技术要点分析!

一、技术架构 1. 网络拓扑 Ad-hoc网络&#xff1a;无人机动态组建自组织网络&#xff0c;节点自主协商路由&#xff0c;无需依赖地面基站。 混合架构&#xff1a;部分场景结合中心节点&#xff08;如指挥站&#xff09;与P2P网络&#xff0c;兼顾集中调度与分布式协同。 2.…

MQ,RabbitMQ,MQ的好处,RabbitMQ的原理和核心组件,工作模式

1.MQ MQ全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中 保存消息的容器。它是应用程序和应用程序之间的通信方法 1.1 为什么使用MQ 在项目中&#xff0c;可将一些无需即时返回且耗时的操作提取出来&#xff0c;进行异步处理&#xff0…

各类神经网络学习:(四)RNN 循环神经网络(下集),pytorch 版的 RNN 代码编写

上一篇下一篇RNN&#xff08;中集&#xff09;待编写 代码详解 pytorch 官网主要有两个可调用的模块&#xff0c;分别是 nn.RNNCell 和 nn.RNN &#xff0c;下面会进行详细讲解。 RNN 的同步多对多、多对一、一对多等等结构都是由这两个模块实现的&#xff0c;只需要将对输入…

深度学习篇---深度学习中的范数

文章目录 前言一、向量范数1.L0范数1.1定义1.2计算式1.3特点1.4应用场景1.4.1特征选择1.4.2压缩感知 2.L1范数&#xff08;曼哈顿范数&#xff09;2.1定义2.2计算式2.3特点2.4应用场景2.4.1L1正则化2.4.2鲁棒回归 3.L2范数&#xff08;欧几里得范数&#xff09;3.1定义3.2特点3…

星越L_灯光操作使用讲解

目录 1.开启前照灯 2左右转向灯、远近灯 3.auto自动灯光 4.自适应远近灯光 5.后雾灯 6.调节大灯高度 1.开启前照灯 2左右转向灯、远近灯 3.auto自动灯光 系统根据光线自动开启灯光

Stable Diffusion lora训练(一)

一、不同维度的LoRA训练步数建议 2D风格训练 数据规模&#xff1a;建议20-50张高质量图片&#xff08;分辨率≥10241024&#xff09;&#xff0c;覆盖多角度、多表情的平面风格。步数范围&#xff1a;总步数控制在1000-2000步&#xff0c;公式为 总步数 Repeat Image Epoch …

【一维前缀和与二维前缀和(简单版dp)】

1.前缀和模板 一维前缀和模板 1.暴力解法 要求哪段区间&#xff0c;我就直接遍历那段区间求和。 时间复杂度O(n*q) 2.前缀和 ------ 快速求出数组中某一个连续区间的和。 1&#xff09;预处理一个前缀和数组 这个前缀和数组设定为dp&#xff0c;dp[i]表示&#xff1a;表示…

植物来源药用天然产物的合成生物学研究进展-文献精读121

植物来源药用天然产物的合成生物学研究进展 摘要 大多数药用天然产物在植物中含量低微&#xff0c;提取分离困难&#xff1b;而且这些化合物一般结构复杂&#xff0c;化学合成难度大&#xff0c;还容易造成环境污染。基于合成生物学技术获得药用天然产物具有绿色环保和可持续发…

JavaScript |(五)DOM简介 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源&#xff1a;在这位大佬的基础上添加了一些东西&#xff0c;欢迎大家支持原创&#xff0c;大佬太棒了&#xff1a;JavaScript |&#xff08;五&#xff09;DOM简介 | 尚硅谷JavaScript基础…

The Illustrated Stable Diffusion

The Illustrated Stable Diffusion 1. The components of Stable Diffusion1.1. Image information creator1.2. Image Decoder 2. What is Diffusion anyway?2.1. How does Diffusion work?2.2. Painting images by removing noise 3. Speed Boost: Diffusion on compressed…

yarn 装包时 package里包含sqlite3@5.0.2报错

yarn 装包时 package里包含sqlite35.0.2报错 解决方案&#xff1a; 第一步&#xff1a; 删除package.json里的sqlite35.0.2 第二步&#xff1a; 装包&#xff0c;或者增加其他的npm包 第三步&#xff1a; 在package.json里增加sqlite35.0.2&#xff0c;并运行yarn装包 此…

buu-bjdctf_2020_babystack2-好久不见51

整数溢出漏洞 将nbytes设置为-1就会回绕&#xff0c;变成超大整数 从而实现栈溢出漏洞 环境有问题 from pwn import *# 连接到远程服务器 p remote("node5.buuoj.cn", 28526)# 定义后门地址 backdoor 0x400726# 发送初始输入 p.sendlineafter(b"your name…

DHCP 配置

​ 最近发现&#xff0c;自己使用虚拟机建立的集群&#xff0c;在断电关机或者关机一段时间后&#xff0c;集群之间的链接散了&#xff0c;并且节点自身的 IP 也发生了变化&#xff0c;发现是 DHCP 的问题&#xff0c;这里记录一下。 DHCP ​ DHCP&#xff08;Dynamic Host C…

股指期货合约的命名规则是怎样的?

股指期货合约的命名规则其实很简单&#xff0c;主要由两部分组成&#xff1a;合约代码和到期月份。 股指期货合约4个字母数字背后的秘密 股指期货合约一般来说都是由字母和数字来组合的&#xff0c;包含了品种代码和到期的时间&#xff0c;下面我们具体来看看。 咱们以“IF23…

OSPF 协议详解:从概念原理到配置实践的全网互通实现

什么是OSPF OSPF&#xff08;开放最短路径优先&#xff09;是由IETF开发的基于链路状态的自治系统内部路由协议&#xff0c;用来代替存在一些问题的RIP协议。与距离矢量协议不同&#xff0c;链路状态路由协议关心网络中链路活接口的状态&#xff08;包括UP、DOWN、IP地址、掩码…

蓝桥杯 之 数论

文章目录 习题质数找素数 数论&#xff0c;就是一些数学问题&#xff0c;蓝桥杯十分喜欢考察&#xff0c;常见的数论的问题有&#xff1a;取模&#xff0c;同余&#xff0c;大整数分解&#xff0c;素数&#xff0c;质因数&#xff0c;最大公约数&#xff0c;最小公倍数等等 素…

Beans模块之工厂模块注解模块@Qualifier

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

C# HTTP 文件上传、下载服务器

程序需要管理员权限&#xff0c;vs需要管理员打开 首次运行需要执行以下命令注册URL&#xff08;管理员命令行&#xff09; netsh advfirewall firewall add rule name"FileShare" dirin actionallow protocolTCP localport8000 ipconfig | findstr "IPv4&quo…

FPGA中串行执行方式之计数器控制

FPGA中串行执行方式之计数器控制 使用计数器控制的方式实现状态机是一种简单且直观的方法。它通过计数器的值来控制状态的变化,从而实现顺序逻辑。计数器的方式特别适合状态较少且状态转移是固定的场景。 基本原理 计数器控制的状态机 ​例程1:简单的顺序状态机 以下是一个…

纯vue手写流程组件

前言 网上有很多的vue的流程组件&#xff0c;但是本人不喜欢很多冗余的代码&#xff0c;喜欢动手敲代码&#xff1b;刚开始写的时候&#xff0c;确实没法下笔&#xff0c;最后一层一层剥离&#xff0c;总算实现了&#xff1b;大家可以参考我写的代码&#xff0c;可以拿过去定制…