【MIT6.S081】lab0:copy.c
本文最后更新于217 天前,其中的信息可能已经过时,如有错误请发送邮件到1910452164@qq.com

本人在学习MIT6.S081的lecture 1时,想复现老师编译运行copy.c文件的操作,但是遇到了重重阻碍,查阅了许多经验贴后才得以解决,现在将探索过程复盘如下。

1.在linux中编辑文件

linux提供了vi编辑器来编辑主机中的文件,这个文件可以是.txt的文本格式,也可以是.c等各种可编辑格式。其使用方法很简单,只需要输入vi <文件名>即可,如我想在桌面创建一个copy.c文件,那我的指令就是输入在“桌面”的根目录下的vi copy.c

按下enter后,系统就会自动在桌面创建一个copy.c文件,并且终端会进入vi的命令模式,如下图。

此时我们需要从命令模式切换到编辑模式,此时只要在键盘上按下a、A、i、I、o、O中任何一个字符即可进入编辑模式,这些字符各自的含义如下:

  • a:在当前光标下一位开始编辑
  • A:在当前光标所在行行尾开始编辑
  • i:在当前光标开始编辑
  • I:在当前光标所在行行首开始编辑
  • o:在当前光标的下一行开始编辑
  • O:在当前光标的上一行开始编辑

这里我们选择按下小写i,在当前光标处开始编辑,按下之后左下角变成了“– 插入 –”,如下图。

注:如果你发现按下i后没有变化,并且出现症状:

  1. 按键盘上的方向键后终端却显示出ABCD等字符
  2. backspace(删除)键不起作用

时,请移步至https://blog.csdn.net/a12355556/article/details/120512771,先解决此问题。

言归正传,接下来默认大家的vi/vim编辑器都可以正常使用。

在编辑模式下,我们可以输入任意内容,此处我选择输入lecture 1中示范的代码。输入完成后,按下esc退出编辑模式,如下图:

上图中的示例代码如下:

#include "kernel/types.h"
#include "user/user.h"

int main()
{
	char buf[64];
	while(1){
		int n = read(0,buf,sizeof(buf));
		if(n <= 0)
			break;
		write(1,buf,n);
	}
	exit(0);
}

此时我们想要保存并退出,只需要直接输入:wq,并按下回车即可,如下图(不用调整光标位置,键入:时光标会自动跳转到底部)

然后关闭终端,你会发现桌面上多了一份copy.c文件,你可以双击确认其中的内容是否和我们刚刚键入的相同,如果一致,那就说明我们创建成功了。

2.在正确的目录下创建代码

由于xv6系统本身并没有编译器的实现,所以我们需要把程序在编译系统时一并编译,因此,我们需要在xv6系统的编译文件夹中加入我们的copy.c文件。对于不同人的主机,xv6系统存储的位置各不相同,所以我们应该把待编译的.c文件创建在正确的相对位置。

我们要找的目录是xv6-labs-2020/user,我们可以在终端中通过cd指令来切换到对应目录,如下图:

此时我们只需要仿照第1步,在该目录下创建一个copy.c文件即可。

3.修改Makefile文件

为了让xv6帮我们一起编译文件,光把文件“给它”还不行,我们要通过修改它的“待编译清单”来“告知它”我们的需求。

首先我们在xv6-labs-2020目录下输入指令:

vi Makefile

按下回车后,我们按下i进入编辑模式,然后往下翻找,找到UPROGS关键词,这下面就是待编译的文件名了,此时我们只需要照葫芦画瓢,在后面接上我们的文件名copy即可:

即插入下面的代码:


$U/_copy\

修改成功后,依旧仿照之前的操作,按下esc,再:wq即可保存退出。

3.编译运行xv6

同样的,我们在xv6-labs-2020目录下输入:make qemu来启动xv6系统:

启动成功后,我们可以输入ls指令,来查看已编译的文件,此时我们就可以看到刚刚添加的copy:

随后,我们就可以仿照课程中老师的操作,直接输入copy即可调用我们的copy程序:

要想退出xv6系统,只需要先按下ctrl+a,然后再按下x即可:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇