本文已收录到:CS143斯坦福编译原理课程实验 专题
- CS143 斯坦福编译原理 实验环境准备
视频讲述
官方课程资源下载
2021版的课程主页(含文本作业、编程作业、PPT等信息):http://web.stanford.edu/class/cs143/
备用:因为官方的课程主页每年都会更新,有时候会时常上不上去,这里我将上述网站进行了镜像,以备不时之需。
下载压缩包后解压缩,点击index.html文件即可查看镜像的课程主页。
实验环境安装 – 虚拟机方式
课程实验虚拟机镜像文件/说明文档等下载:
Ps:虚拟机镜像文件是分享在box.com上面的,直接访问无法打开,应该是被DNS污染了,请自行修改本地host文件解决。
备用:这里我也将上述网站进行了镜像。edx
备用:实验用虚拟机镜像文件:
链接:https://pan.baidu.com/s/12YEvFiLGo0D-etatrcrjpQ?pwd=aaaa
提取码:aaaa
虚拟机提供的帐户是“compilers”,密码是“cool”。
制作共享文件夹
- 转到 VirtualBox 主屏幕并单击设置图标
- 转到共享文件夹菜单,然后单击“添加”按钮
- 选择您希望共享文件夹在主机系统上的路径
- 勾选自动挂载
- 点击确定
使用共享文件夹
在本节中,我们将您的共享文件夹的名称称为 <FolderName>。例如,在上面的示例中,<FolderName> 指的是 tmp。Ps:这里的 <FolderName> 说的是本地物理机电脑新建的那个文件的文件名。
- 自动挂载的文件夹位于/media/sf_<FolderName>
- 如果您没有勾选自动挂载,您可以使用以下内容挂载共享文件夹:
$ sudo mkdir -p /media/sf_<FolderName> $ sudo mount -t vboxsf -o rw,gid=vboxsf <FolderName> /media/sf_<FolderName>
- 要使共享文件夹可编辑,您需要运行以下命令并重新启动虚拟机。Ps:下面的 compilers 是虚拟机账户名。
$ sudo usermod -a -G vboxsf compilers
- 现在,写入共享文件夹的任何文件都将出现在您的虚拟机和主机中。为了便于访问,您可以使用以下命令从共享文件夹创建一个符号链接到 ~/cool:
$ ln -s /media/sf_<FolderName> /home/compilers/cool/<FolderName>
实验环境安装 – 手动配置
上述虚拟机方式安装的操作系统是一种叫做 Bodhi Linux 的操作系统,它本身基于流行的 linux 发行版 Ubuntu。我们使用 Bodhi Linux 是为了使下载大小更易于管理,因为完整的 Ubuntu 安装非常大。但是,由于它是基于 Ubuntu 的,因此大多数 Ubuntu 软件包也可以安装在 Bodhi Linux 上。——但笔者试过了,这个操作系统安装个git都费劲,版本太低了,update指定也失效了,换源也不行。
所以你可以尝试下手动安装实验环境,建议用最新的Ubuntu操作系统。
下载课程实验基础代码框架
EDX平台提供了一个压缩包下载链接,wget
这个链接,解压到目录/usr/class
下。这是官方配置方式。
Ps:如果链接失效,可以本站下载:asset-v1_StanfordOnline+SOE.YCSCS1+1T2020+type@asset+block@student-dist.tar
下载实验软件
之后的PA
需要使用两个工具flex, bison
,你可能已经注意到了,它们需要我们额外安装。当然,如果你使用了官方虚拟机,就不用自己安装,也不用担心以下要说的问题。
课程使用的flex
版本较老,没有考虑到C++
和C
轻微不兼容问题。或者说,新版本flex
默认你的代码是与时俱进的。不论如何,为了使用课程提供的代码,我们不得不使用更老的flex
版本。写在这里提醒你,是因为你的Linux
包管理工具默认安装最新版本2.6+
,而你可能对一些错误迷惑不已。
官方虚拟机使用的是2.5.35
,所以我们最好也这么做。我从这里下载到的压缩包,解压之后:
./configure && make && sudo make install
还不清楚bison
是否有版本要求,之后发现这方面问题再写上来。
Ps:如果链接失效,可以本站下载:flex-2.5.35
HelloWorld
class Main inherits IO { main(): SELF_TYPE { out_string("Hello, World.\n") }; };
在VSCode中编写Cool代码,使用实验环境中的 coolc 文件名.cl 命令编译成 .s MIPS汇编文件再使用spim汇编器运行。
友情提示,VSCode中已经有Cool语言的扩展了,安装后可以实现代码提示。
参考文献:https://zhuanlan.zhihu.com/p/226190284
谢谢问题已解决
下载flex2.5.35版本后再怎么操作,能详细说明
./configure && make && sudo make install
flex2.5.35需要装到特定的位置还是任意位置都行?
已解决
刚刚看到 好的
视频太卡了
今晚我传到B站上,id:洛阳高志远
https://space.bilibili.com/70934136/channel/collectiondetail?sid=1666642
感谢你的镜像!
okk,有帮助就好
佬,这个实验可以直接上手吗,需要再去看对应学校的课程视频吗?
如果有编译原理知识可以不全看配套视频,但这个编译器的语言挺具体实现的,名字叫做cool语言,还是需要看几节视频了解下语法规则,视频B站有。
兄弟镜像救命了
( ̄▽ ̄)/