前言
以前不知道基础的重要性,做项目的时候总是觉得快把这个功能实现了就行,完全没有去深入挖掘其中的原理。最近秋招开始之后,突然开始深刻理解到了一些原理层面上的重要性,于是找出了csapp lab做一做系统层面的实验。
在刚开始找csapp的时候,两眼一黑,花了一下午才理清楚要怎么做。把搭环境和如何开始csapp的过程记录一下
搭建环境
-
Ubuntu 22.04 不想装双系统,直接VMware装好
-
找了很久,找到了一个很好的网址,整理了整套实验的lab,包括部分书籍内容。
https://hansimov.gitbook.io/csapp/
csapp一共有8个lab,也就是我们可以跟着csapp这本书从前往后的顺序跟着lab一个一个做就好了。
每一个lab都是相互独立,且每个里面都会写清楚要求。
每一个lab在我们做完了之后,可以有一个自动评分程序来检查我们的成果,这是非常方便的一个地方。
如何开始
- 打开这个网址里面的各个实验,首先下载自学材料中的.tar文件,下载解压之后,就是一个lab的完整内容啦。
- 然后我们可以阅读readme文件查看这个lab的大致要求和怎么做。并且readme也会告诉你这个压缩包中的整个文件架构和各个文件的功能。
- 第三步就可以进入到readme中提到的做实验的文件中(比如第一个lab就是
btest.c
),然后仔细阅读里面的要求以及规矩 (非常重要),看完之后就可以根据要求来开始做lab啦! - 做完之后,在文件目录下打开终端,使用
make clean
清除之前的编译文件,make
生成可执行文件,./文件
或者其他指令来运行自动评分程序,就可以看到评分结果啦。
题解
csapp已经有非常多的人做过了,因此题解也是特别的多,也很方便查阅,这里列一个
https://zhuanlan.zhihu.com/p/449877475
补充
在我做第一个lab的时候,发现make会报错,报错信息如下:
fatal error: bits/libc-header-start.h: No such file or directory
这是缺少库的问题,参考这篇博客,,可以解决问题
sudo apt-get install gcc-multilib
csapp lab学习之路就开始啦!