课程主页:http://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/schedule.html

课程资料:https://github.com/EugeneLiu/translationCSAPP

课程视频:https://www.bilibili.com/video/av31289365/

最近开始做CSAPP课程的实验, 配置环境时碰到一些坑,网上相关资料比较零散,所以这里总结一下。

环境配置

2020/7/18更新:

之前做实验的时候用的是19.04版本,有挺多问题,建议安装20.04,步骤如下:

  1. 安装虚拟机以及ubuntu:https://blog.csdn.net/qq_35623773/article/details/89893853

  2. 安装完的Ubuntu无法全屏,Ubuntu全屏设置教程:https://blog.csdn.net/web_snail/article/details/96424105

  3. 默认源的下载速度太慢,20.04换源:https://www.cnblogs.com/lynn-z/p/12874504.html

  4. windows与ubuntu文件互传:

    https://blog.csdn.net/rooki_men/article/details/78967840

    https://blog.csdn.net/qq_37040516/article/details/87688408

    建议两种方法都使用,因为第一种方法有时候会导致系统卡住。

  5. 安装gcc

    sudo apt-get  install  build-essential

    如果编译的时候产生类似如下报错:

    Error “gnu/stubs-32.h: No such file or directory” while compiling Nachos source code

    那么可以参考https://stackoverflow.com/questions/7412548/error-gnu-stubs-32-h-no-such-file-or-directory-while-compiling-nachos-source

  6. 安装Visual Studio Code

  7. 做实验

原文:

  1. CSAPP的实验都是在Linux下完成的,所以需要安装VM以及Ubuntu,对应的教程如下:https://blog.csdn.net/qq_35623773/article/details/89893853

  2. 安装完的Ubuntu无法全屏,Ubuntu全屏设置教程:https://blog.csdn.net/web_snail/article/details/96424105

  3. 有时候需要Windows和Ubuntu互传文件,教程如下:https://blog.csdn.net/qq_37040516/article/details/87688408

  4. 在datalab-handout使用make命令后产生报错

    gcc -O -Wall -m32 -lm -o btest bits.c btest.c decl.c tests.c
    In file included from btest.c:16:
    /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: 没有那个文件或目录
     #include <bits/libc-header-start.h>
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from decl.c:1:
    /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: 没有那个文件或目录
     #include <bits/libc-header-start.h>
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h:194,
                     from /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h:7,
                     from /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h:34,
                     from tests.c:3:
    /usr/include/limits.h:26:10: fatal error: bits/libc-header-start.h: 没有那个文件或目录
     #include <bits/libc-header-start.h>
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make: *** [Makefile:11:btest] 错误 1

    查阅资料:https://blog.csdn.net/qq_32693119/article/details/80535662

    得到应该安装gcc

    sudo apt-get install gcc-multilib

    但是依然产生报错

    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    没有可用的软件包 gcc-multilib,但是它被其它的软件包引用了。
    这可能意味着这个缺失的软件包可能已被废弃,
    或者只能在其他发布源中找到

    修改源

    https://blog.csdn.net/API1_7/article/details/94735318

    https://www.cnblogs.com/cymwill/p/10293205.html

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    sudo gedit /etc/apt/sources.list

    再次安装

    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
    因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
    包尚未被创建或是它们已被从新到(Incoming)目录移出。
    下列信息可能会对解决问题有所帮助:
    
    下列软件包有未满足的依赖关系:
     gcc-multilib : 依赖: gcc-7-multilib (>= 7.3.0-12~) 但是它将不会被安装
    E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

    依然产生报错,最后在https://zhuanlan.zhihu.com/p/82529114得到如下方法:

    • 直接修改makefile文件,将CFLAGS = -O -Wall -m32改为CFLAGS = -O -Wall -m64

    所以目前看来最简单的方法还是修改makefile文件。

vmware虚拟机ubuntu开机黑屏

在做第一个实验的时候,碰到了ubuntu开机黑屏的现象,查阅了相关资料才得以解决,资料如下:

https://www.cnblogs.com/wyh-study/p/12015833.html

https://jingyan.baidu.com/article/1876c8527effc0890a13765b.html

其他参考资料:

https://blog.csdn.net/weixin_38739799/article/details/79395953

https://blog.csdn.net/weixin_43821874/article/details/86480934

Codeblocks背景修改:https://blog.csdn.net/Reegor/article/details/78006967