xv6-x86在ubuntu14.04 i386下正常编译、调试,在ubuntu23.04下编译各种报错--google镜像
来源
原git仓库 xv6-x86(xv6-public)
文档 mit 6.828/2023/
文档 MIT 6.828/2018/xv6/book-rev11.pdf
原readme
注:
- xv6-x86(xv6-public) 已经被放弃了, 原作者转向了xv6-riscv
- xv6-x86文档来源:mit-pdos/xv6-book.git, 它需要 heirloom-doctools 来编译成pdf,但 heirloom-doctools太旧了 ,估计要ubuntu16或14能编译此pdf?猜测 编译出来的pdf就是 MIT 6.828/2018/xv6/book-rev11.pdf,因此不需要自己编译pdf了
环境
uname -a
#Linux xx 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linuxcat /etc/issue
#Linux Mint 21.1 Vera \n \lcat /etc/debian_version
#bookworm/sid
准备
sudo apt install qemu-system-x86
make -nB qemu
make_-nB_qemu.log
展开的Makefile比对: xv6-x86 和 xv6-riscv (仅kernel部分)
在ubuntu23.04 x64下编译 xv6-x86代码, make时各种报错. 需要转移到老版本ubuntu14.04 i386下编译xv6-x86
比如
z@mm:/crk/xv6-x86$ make qemugcc -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie -no-pie -c -o sh.o sh.c
sh.c: In function ‘runcmd’:
sh.c:58:1: error: infinite recursion detected [-Werror=infinite-recursion]gcc -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie -no-pie -c -o sh.o sh.c
sh.c:57:1: error: attributes should be specified before the declarator in a function definition57 | void| ^~~~
sh.c: In function ‘main’:
sh.c:168:7: error: implicit declaration of function ‘runcmd’ [-Werror=implicit-function-declaration]168 | runcmd(parsecmd(buf));gcc -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie -no-pie -c -o mp.o mp.c
In function ‘mpconfig’,inlined from ‘mpinit’ at mp.c:101:14:
mp.c:83:10: error: array subscript -48806446 is outside array bounds of ‘void[2147483647]’ [-Werror=array-bounds]83 | if(conf->version != 1 && conf->version != 4)
ubuntu14.04 i386 @docker
docker安装
省略
docker镜像加速
cat /etc/docker/daemon.json
{
"registry-mirrors":"https://xxxx.mirror.aliyuncs.com"
}#登陆阿里云官网 ---> docker镜像加速 ---> https://xxxx.mirror.aliyuncs.com (xxxx是每个个人阿里云账户不同)
xxx
ubuntu 14.04 docker镜像
在这里找到了 ubuntu 14.04 docker镜像名: hub.docker
sudo docker pull i386/ubuntu:14.04
sudo docker run --name ubuntu-1404-i386-a -itd -v /crk:/crk i386/ubuntu:14.04
ubuntu 14.04 docker实例 内 编译 xv6-x86
进入docker实例终端
进入docker该实例终端
sudo docker exec -it ubuntu-1404-i386-a bash:
apt国内源配置
apt国内源:
# https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
echo '清华ubunt14.04 apt源' > /etc/apt/sources.list
apt update
安装 gcc、gdb、qemu
apt install build-essential gdb
apt install qemu-system-x86
编译、运行
cd /crk/xv6-x86/
make clean
make qemu-nox
#正常编译, 正常启动qemu#备注: qemu-nox: 即 -nographic
调试
准备
echo 'add-auto-load-safe-path /crk/xv6-x86/.gdbinit' > /root/.gdbinit
gdb调试
详见:两窗口调试:gdb-server、gdb
以下简单描述 ‘两窗口调试:gdb-server、gdb’
- gdb-server窗口
cd /crk/xv6-x86/
make qemu-nox-gdb
#gdb-server在25000端口等待
- gdb窗口
cd /crk/xv6-x86/
gdb
#即连接到25000端口的gdb-server,可以开始正常调试#备注: /crk/xv6-x86/.gdbinit 中配置了 连接25000端口
相关文章:
xv6-x86在ubuntu14.04 i386下正常编译、调试,在ubuntu23.04下编译各种报错--google镜像
来源 原git仓库 xv6-x86(xv6-public) 文档 mit 6.828/2023/ 文档 MIT 6.828/2018/xv6/book-rev11.pdf 原readme 注: xv6-x86(xv6-public) 已经被放弃了, 原作者转向了xv6-riscvxv6-x86文档来源:mit-pdos/xv6-book.git, 它需要 heirloom-doctools 来编译成pdf&#x…...
关于unity中 编辑器相关逻辑的记录
prefab 在场景中 , 用这个方法可以获取它的磁盘路径: [MenuItem("Gq_Tools/↓获取prefab路径")] public static void SaveDecalParameters() { var objs Selection.objects; var obj objs[0] as GameObject; Object parentObject Prefab…...
linux安装配置MongoDB并设置开机启动
linux安装配置MongoDB并设置开机启动 文章目录 linux安装配置MongoDB并设置开机启动1. 下载 MongoDB 的linux安装包2. 上传 MongoDB 安装包到linux系统中3. 解压 MongoDB 安装包4. 创建 MongoDB 必要目录5. 移动 MongoDB 安装目录6. 设置 MongoDB 环境变量7. 添加 MongoDB 配置…...
1366 - Incorrect string value: ‘\xE5\xB9\xBF\xE5\x85\xB0...‘ for column编码错误
1366 - Incorrect string value: ‘\xE5\xB9\xBF\xE5\x85\xB0…’ for column ‘campus_name’ at row 1 > 查询时间: 0s 原因是数据库创建的时候使用的默认编码latin1,导致表和字段的编码格式都是这种编码,显然这种编码不支持中文。 自己修改了数据库…...
K8S篇之谈谈kubelet的上报机制
浅析一下Kubelet的上报机制 1 kubelet上报节点状态 在K8S集群中,由运行在每个节点的Kubelet定期上报心跳到ApiServer,由此来判断Node是否存在,若Node超过一定时间没有上报心跳,则该节点的状态就会被设置为NotReady,同…...
混沌系统在图像加密中的应用(小波混沌神经网络)
混沌系统在图像加密中的应用(小波混沌神经网络) 前言一、小波混沌神经网络模型二、拓展三、python代码 前言 小波混沌神经网络是一种神经网络模型,结合了小波变换和混沌理论,用于信号处理、分类和预测。该模型基于多层前向神经网…...
Node.js中的文件系统(file system)模块
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
react组件间通信之context
一般用于【祖组件】与【后代组件】间通信 案例: A,B,C,D四个组件的关系分别为:爷爷,爸爸,儿子,孙子 从A向C传递参数:C组件为类式组件 从A向D传递参数:D组件为函数组件 import React, { Componen…...
京东数据分析:2023年10月京东洗衣机行业品牌销售排行榜
鲸参谋监测的京东平台10月份洗衣机市场销售数据已出炉! 10月份,洗衣机市场整体销售呈上升走势。鲸参谋数据显示,今年10月,京东平台洗衣机市场的销量为143万,环比增长约23%,同比增长约1%;销售额约…...
QQ恢复聊天记录,就用这3个方法!
无论是因为误操作、手机丢失、系统崩溃,还是因为更换了新手机,恢复重要的QQ聊天记录都是一件必做的事情。通过聊天记录,用户可以随时查看之前的信息,以便了解事情的经过。 那么,如何恢复丢失的QQ聊天记录呢࿱…...
高能数造电池3D打印智能制造小试线,开启全固态电池数字化新时代
在科技创新的浪潮中,电池制造领域又迎来了一次突破性的进展。近日,高能数造(西安)技术有限公司重磅推出了其最新电池数字制造装备——全固态电池3D打印智能制造小试线 ,这一创新性的技术开启了全固态电池的数字化智造新时代,为全固…...
stable diffusion为什么能用于文本到图像的生成
推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具: DreamTexture.js自动纹理化开发包 - NSDT 稳定扩散获得如此多关注的原因 如果你还没有看过它:稳定扩散是一个文本到图像的生成模型,你可以输入一个文本提示,比如…...
c语言刷题第10周(16~20)
规律: 若多个次数最多按ASCII码顺序输出。 用for循环i取(0~26) 则输出满足条件的字符串中位置最靠前的那个。 用while循环遍历(while(a[i]!\0)) 从键盘输入任意只含有大小写字母的串s&…...
Vue.js 响应式系统深度剖析
Vue.js 是当前最流行的 JavaScript 前端框架之一,其核心特性之一就是响应式系统。Vue.js 响应式系统的设计允许开发者以声明式的方式更新 DOM,随着数据变化自动更新相关组件。本文将详细介绍 Vue.js 响应式系统的工作原理,并通过示例来展示其…...
LabVIEW如何才能得到共享变量的引用
LabVIEW如何才能得到共享变量的引用 有一个LabVIEW 库文件 (.lvlib) ,其中有一些定义好的共享变量。但需要得到每个共享变量的引用以便在程序运行时访问其属性。 共享变量的属性定义在“变量”类属性节点中。为了访问变量类,共享变量的引用必须连接到变…...
界面控件DevExtreme图表和仪表(v23.1) - 新功能(Angular,React,Vue,jQuery)
本文将为大家总结下DevExtreme在v23.1版本中发布的一些与图表和仪表盘相关的功能。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery&#…...
Rust和isahc库编写代码示例
Rust和isahc库编写的图像爬虫程序的代码: rust use isahc::{Client, Response}; fn main() { let client Client::new() .with_proxy("") .finish(); let url ""; let response client.get(url) .send() …...
Win10笔记本开热点后电脑断网的解决方法
在Win10笔记本电脑中用户可以随时打开热点,但是发现热点开启后电脑就会断网,网络不稳定就会影响到用户的正常使用。下面小编给大家介绍两种简单的解决方法,解决后用户在Win10笔记本电脑开热点就不会有断网的问题出现了。 具体解决方法如下&am…...
跨链知识指南
跨链知识指南 什么是跨链 跨链就是能够让两个不同的链产生某种关联的技术,或者说能把链A的东西搬到链B,跨链是一个复杂的过程,需要链对链外的信息的获取与验证,需要节点有单独的验证能力等等 什么是跨链桥? 跨链桥…...
字符编码转换时发生内存越界引发的摄像头切换失败问题的排查
目录 1、问题说明 2、初步分析 3、字符串字符编码说明 4、进一步分析 5、为啥在日常测试时没有遇到切换摄像头失败的问题呢? 6、华为MateBook笔记本使用高通的CPU 7、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
