- 虚拟机Virtual Box6.1(VMare原理一致)
- 镜像:ubuntu-20.04.5-desktop-amd64.iso
镜像源下载地址:https://cn.ubuntu.com/download/desktop(官方地址)
由于官方地址在国外,如果无法科学上网,可以使用清华大学的镜像源:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
在“工具”条目选择“新建”,在弹出的对话框里输入“虚拟机名称”,以及虚拟机安装的“文件夹”,然后“类型”选择 Linux,“版本”选择 Ubuntu (64-bit),点击下一步。
将虚拟机的内存大小设置为 2048MB,点击下一步。
选择“现在创建虚拟硬盘”,点击“创建”。
选择“VDI”类型,点击“下一步”。
选择“动态分配”,点击“下一步”。
这里将虚拟硬盘的大小调节为20-30GB左右,然后点击“创建”即可。
建议在”设置-常规-高级“开启双向粘贴板、拖放,方便后续实验操作
对新创建的虚拟机进行设置修改,在“设置 - 网络”里选择网卡位”NAT网络“
在”存储-控制器“中选择已经下载好的Ubuntu镜像
建议语言选择”English“,方便后续问题查找和复现,直接点”install Ubuntu“
然后继续点击“Continue”,
继续”Continue“
点击 “Install Now”,之后全部”continue“
选择时区为 “Shanghai”,点击 “Continue”
输入用户名和密码,点击 “Continue”,开始安装
耐心等待安装
推荐安装增强功能
打开虚拟机启动后,输入Ctrl+Alt+T
打开控制台
在根目录里安装Vim工具
sudo apt install vim
Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
安装Git
sudo apt-get install git
git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。
下载
下载实验资料
提供两种方式:
-
直接从CSAPP官网下载对应的实验附件压缩包:此处以第一次实验(Datalab)为例:
在命令行中直接下载:
wget http://csapp.cs.cmu.edu/3e/datalab-handout.tar
下载好后输入
ls
查看当前目录下是否有下载好的实验压缩包
将从官网下载的tar包解压,指令:tar xvf FileName.tar
tar xvf datalab-handout.tar
查看当前目录可以看到解压后的文件夹:
直接通过前面下载的git工具直接从我已经提供的实验仓库进行下载:
git clone https://github.com/Xuyan-cmd/CUC_CSAPP.git
再进入下载好的文件夹CUC_CSAPP
即可看到实验代码:
如果你访问Github出现困难,我同时提供了国内的代码仓库Gitee的地址,使得访问不受网络限制:
语句相同如下:
git clone https://gitee.com/rockjames/CUC_CSAPP.git
进入datalab-handout
文件夹
安装make
sudo apt install make
安装gcc
sudo apt install gcc
此时在命令行中输入make会报错,这是因为lab运行在32位,但下载的Ubuntu是64位的,可以通过输入指令解决该问题
sudo apt-get install gcc-multilib
gcc-multilib
主要是为了支持编译32位程序安装的,也就是后续 gcc 编译命令的 -m32
选项
由于当前gcc版本更新后和gcc-multilib版本不兼容,因此需要进行降级 gcc,解决依赖关系:
-
更新软件源
$ sudo apt-get update
-
安装
aptitude
程序,这个是包管理器程序,解决依赖关系很方便,否则手动解决会很麻烦。$ sudo apt-get install aptitude
-
使用 aptitude 安装
gcc-multilib
$ sudo aptitude install gcc-multilib
这个命令首先会检查依赖关系, 第一次提示是否接受当前方案(这个方案什么都不做),选择 n。 第二次提示给出降级的方案,选择 Y。
在/#1_Datalab
目录下使用vim打开bits.c
文件,键入i
,进入编辑模式,向下滚动,可以找到需要实现的函数。完成第一个函数实验,int bitXor(int x, in y){}
保存完毕后,在终端中依次输入make clean
、make
、./btest
指令。
make clean
:清除上次的make命令所产生的object文件,
make
:编译本次文件
./btest
:测试代码
./btest -f '对应的函数名'
:对于单独的函数进行单个的检查
./dlc bits.c
:用于检查在编写函数过程中是否违反了相关的规则,调用了禁止的符号和命令
能够看到,修改后的bits.c
文件能够成功通过检测,因此平台搭建已全部完成,可以进行后续实验。