CS143 环境搭建全流程

课程网站:这里这里

edX上也开设了这门课:这里

2022.9.24 更新:添加了直接在Linux上配置的步骤

在Linux上配置环境

老师提供的环境比较简陋,因此我从PA3开始在自己配置的Linux上做作业。

我的用是Ubuntu22.04,其他Debian系的系统应该都可以的。

首先打开命令行,输入:

$ sudo apt-get install flex bison build-essential csh openjdk-6-jdk libxaw7-dev

如果你用C++做作业可以去掉openjdk-6-jdk

接着创建文件夹:

$ sudo mkdir /usr/class

其他目录创建也完全没有问题,只要一会儿配置环境变量时相应地修改一下位置就可以了。

输入:

$ sudo chown $USER /usr/class
$ cd /usr/class
$ wget https://courses.edx.org/asset-v1:StanfordOnline+SOE.YCSCS1+1T2020+type@asset+block@student-dist.tar.gz

解压:

$ tar -xf student-dist.tar.gz

配置环境变量:

$ export PATH=$PATH:/usr/class/bin

如果你不是在usr/class下解压的文件,需要根据你自己的路径配置。

课程上没说,但你还需要输入以下命令:

$ sudo apt-get install libc6-i386

由于我已经做完了PA2,所以我不用配置flex了,至此配置完成。

如果你要做PA2的话,还需要安装旧版本flex,因为上面的命令会安装最新版的flex导致不兼容,对于此,你可以去这里

直接使用课程提供的环境

安装Virtual Box

网址:https://www.virtualbox.org/wiki/Downloads

安装步骤中没有什么特别要说的点,网上的安装教程也有很多了。

安装VM镜像

下载

这个镜像可以在edX上找到,但是似乎要花钱升级课程后才能下载:

通过一番查找,我发现在B站上有人已经分享了这个文件,下面是链接,将链接中的vbox文件夹整体下载即可。

链接:https://pan.baidu.com/s/1DcEyrQyBIzbZ1577RTUA_Q
提取码:xobv

配置

Virtual Box的注册中找到上面下载的Complier.vbox并添加。

添加后:

设置共享文件夹

可以通过共享文件夹在windowslinux系统间同步文件。

先自己在合适的位置新建一个文件夹

然后如下图所示进行配置:

运行虚拟机,在其中的命令行输入sudo usermod -a -G vboxsf compilers,后重启虚拟机就可以了。

下载用于判作业的脚本

判作业的脚本在官网上也没有,我从github找到了:

https://github.com/s7hoang/stanford-lagunita-cs1-compilers-grading-scripts

或者从网盘下载:

链接:https://pan.baidu.com/s/1s70FF3N_8xrbNDB_L5oMrQ
提取码:darg

下载后将4个脚本放到之前创建的共享文件夹中:

打开虚拟机,查看是否同步至linux系统中:

执行以下命令,将脚本移动到相应作业所在的文件夹中,其中的<FolderName>代指共享文件夹名称,<num>代指脚本号1-4中的一个。
要注意的是由于mooc版本的课程相比于学校课程多了一个作业,因此脚本号与作业号产生了偏差,第i个脚本对应的是第i+1个作业:

$ mv /media/sf_<FolderName>/pa<num>-grading.pl /home/compilers/cool/assignment/PA<num+1>

如下所示,脚本1对应的是作业2,而作业1没有判题脚本:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeYsxkXG-1662249796917)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220904073821082.png)]

当你完成作业后,在对应作业的目录下执行:

$ perl pa<num>-grading.pl

即可对作业进行判分。

运行hello_world.cl

最后运行一个示例,输入以下命令:

$ mkdir examples
$ cd examples
$ cp /usr/class/cs143/examples/hello_world.cl .
$ coolc hello_world.cl
$ spim hello_world.s

注意第三行最后的.

如下所示:

在这里插入图片描述