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
并添加。
添加后:
设置共享文件夹
可以通过共享文件夹在windows
和linux
系统间同步文件。
先自己在合适的位置新建一个文件夹
然后如下图所示进行配置:
运行虚拟机,在其中的命令行输入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没有判题脚本:
当你完成作业后,在对应作业的目录下执行:
$ 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
注意第三行最后的.
。
如下所示: