CSAPP配套了一系列很棒的lab,由于实验环境是unix,如果在Windows或MACOS环境下建议使用Docker的Linux容器来搭建csapp的实验环境。

环境搭建

  • 下载lab
    lab下载地址:http://csapp.cs.cmu.edu/3e/labs.html,点击对应实验的Self-Study Handout即可下载该实验。
  • 安装Docker
    Docker下载地址:https://www.docker.com/,选择对应操作系统并下载安装即可。
  • 配置ubuntu
    选择ubuntu作为实验的运行环境,下面是一些配置命令。
    • 从仓库拉取ubuntu镜像
      docker pull ubuntu:18.04
    • 创建容器
      从该ubuntu镜像创建容器,命名为csapp_env,且挂载csapp共享文件夹(对应容器根目录下的csapp文件夹),之前下载的lab资源通过该文件夹和容器共享,命令中的/Users/xxxx/Desktop/csapp为共享文件夹的本地目录绝对路径。执行完创建容器的命令后会自动进入容器并打开容器的bash,后面的命令都是在容器中的bash执行的。
      docker container run -it -v /Users/xxxx/Desktop/csapp:/csapp --name=csapp_env ubuntu:18.04 /bin/bash
    • 更新apt软件源
      apt-get update
    • 安装sudo
      apt-get install sudo
    • 安装c/c++编译环境
      build-essential软件包列表内包含libc6-dev、libc-dev、gcc、g++、make、dpkg等。
      sudo apt-get install build-essential
    • 补充gcc的完整环境(gcc-multilib)
      sudo apt-get install gcc-multilib
    • 安装gdb
      sudo apt-get install gdb
  • 启动&退出环境
    完成环境配置后,每次需要进行试验时执行如下命令即可,其它docker命令见官方文档https://docs.docker.com/engine/reference/commandline
    • 重新运行容器实例
      docker container start csapp_env
    • 进入容器并打开bash
      docker container exec -it csapp_env /bin/bash
    • 退出环境
      CTRL+D或者使用exit命令即可从容器中退出
    • 停止容器
      当不需要进行实验时使用kill命令终止实例的运行并释放系统资源
      docker container kill csapp_env