windows下编译xv6

本文介绍了如何在Windows下编译xv6操作系统,避免在Linux虚拟机和Windows之间切换的繁琐。主要工具包括mingw32、gcc、binutils、make和qemu。由于默认qemu缺少gdb调试功能和合适的输入输出设置,因此需要自行编译。同时,makefile、dd、sign.pl、vectors.pl和mkfs等也需要相应调整,如用wd.c替代dd,sign.c替代sign.pl,以及对mkfs.c的修改。
摘要由CSDN通过智能技术生成

   开始学习xv6之前编译它是第一步骤,然而很多人可能和我一样用的是windows跑linux虚拟机,这样来回切换系统和共享文件显得十分麻烦。

在这样的背景下我就想直接在windows编译调试xv6会方便很多。

  首先编译xv6涉及的工具包括gcc,binutils,make,qemu。

xv6需要能生成elf32格式的可执行文件的工具链,好在windows下已经有了mingw32这个gcc在windows下的移植,

这样用mingw32编译一套在windows下运行的i386-none-elf交叉工具链成为可能。

Make和qemu也是如此,这里需要说明的是默认网上下载的qemu可执行文件很可能是不带有gdb调试功能的,

这也是需要重新自己编译qemu的原因之一,第二个原因是qemu默认的输入输出会被定向到两个文本文件,

直接后果是xv6的uart将无法使用,自己编译qemu解决上述两点。

  接下来是修改makefile文件,这里同时涉及dd,sign.pl,vectors.pl,mkfs。

dd在这里的作用是将bootblock和kernel两个文件组合构建xv6.img镜像,sign.pl是在bootblock添加0xaa55引导标记,

vectors.pl是生成vectors.S文件,mkfs是构建xv6根文件系统镜像fs.img用的。

我编写了wd.c对应dd,sign.c对应sign.pl,vectors.S在linux构建时直接复制了,mkfs.c也需要修改。

wd.c

#include <stdio.h>

int main(int argc, 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值