>它山之石可以攻玉。

对于《深入理解计算机系统》这本神人写就的神书, 我等凡人就不评论什么啦。

这本书的 第二,三 部分, 真的真的对我理解操作系统有很大的帮助。 (第一部分偏硬件,如果搞高性能,第一部分还是蛮重要的) 。 第一部分的的确确有些艰深, 从剖析汇编码, 窥探机器码, 到 理论上造CPU, 虽然作者(布赖恩特)讲的十分清楚, 但是仍然无法弥补我智商上的先天缺陷(俗称:脑残)。

书中的内容真的是很丰富。 我觉得也正是书中的内容太多, 知识点太多, 所以很难完全读懂。 因为, 这本书很厚, 你读着读着前面的东西就忘得七七八八啦, 读着读着就不知所云啦, 读着读着就读出智商缺陷啦。 书中的内容虽然很多, 很全面, 但是又都很有必要, 都很经典, 很精准 ------ 这也许就是 神人布赖恩特的神奇之处。

看了这本书后, 才深切的理解到: 这么复杂的东西竟然是人类发明的, 好神奇!

没办法, 说好的不评论什么的, 还是无耻的写了一堆废话。 ------ 唉, 没办法, 神书就是有这样的魔力。

csapp.h 是这本书中的一个头文件。 Linux本身不带有这个文件,这个文件是作者编写的。 它整合的好多其他的头文件, 所以有了它就没必要再写那么多头文件啦。

下载地址: http://csapp.cs.cmu.edu/public/code.html

Ubuntu(我的是Ubuntu14.04)中使用方法:
* 首先下载 csapp.h 和 csapp.c
####方法一
编译链接csapp.h:
1.我的当前工作目录为~/WorkSpace,目录下有3个文件,fork.c, csapp.h, csapp.c。

2.编译csapp.c文件,命令为gcc -c csapp.c,生成目标文件csapp.o。

3.编译fork.c文件,命令为gcc -c fork.c,生成目标文件fork.o。

4.链接目标文件csapp.o、fork.o(由于csapp.c文件中有关于线程中部分,gcc编译的时候必须带 -lpthread,否则会出现一堆错误),命令为

gcc -o fork csapp.o inet_aton.o -lpthread,生成可执行文件fork,然后 ./fork 运行即可。

方法二

把csapp.h 放到gcc的头文件文件夹中。

1.把csapp.h csapp.c文件放到/usr/include(看的别人的方法是放到/usr/lib下, 我试了试, 不可以啊 V_V||).

2.在csapp.h里面最后一行#end if之前添加:

#include <csapp.c>

(记住: 这里#include<csapp.c> 一定要写在接近文件结尾的地方, 即: 所有函数的声明的后面, #end if 之前。如果写在文件开始也是会有一堆错误出现的)

3.csapp.c文件中有关于线程中部分,gcc编译的时候必须带 -lpthread,否则会出错的。

4.在要编译的文件头添加#include <csapp.h>

5具体的指令如下:gcc -o fork fork.c -lpthread

然后运行: ./fork

gcc常用选项: http://blog.csdn.net/max__payne/article/details/2058898

在Ubuntu下使用 csapp.h 和 csapp.c的更多相关文章

  1. 深入理解计算机中的 csapp.h和csapp.c

    csapp.h其实就是一堆头文件的打包,在http://csapp.cs.cmu.edu/public/code.html 这里可以下载.这是<深入理解计算机系统>配套网站. 在头文件的# ...

  2. csapp 深入理解计算机系统 csapp.h csapp.c文件配置

    转载自   http://condor.depaul.edu/glancast/374class/docs/csapp_compile_guide.html Compiling with the CS ...

  3. ubuntu 下wireshark 软件安装与使用

    在ubuntu下,使用wireshark也是很有必要的.虽然可以使用tcpdump等工具. ubuntu:11.10     1. sudo apt-get install wireshark     ...

  4. am335x在ubuntu下使用StarterWare编写裸机程序并在CCS中用Jlink调试

    StarterWare在AM335X上的烧录运行 步骤:1.下载安装StarterWare,我们团购的SK需要02.00.00.07版本.最近外网访问慢,我上传到论坛.2.找一张miniSD卡,不需要 ...

  5. Ubuntu下 fatal error: Python.h: No such file or directory 解决方法

    参考: fatal error: Python.h: No such file or directory Ubuntu下 fatal error: Python.h: No such file or ...

  6. Ubuntu下编译c文件时,遇到math.h头文件不能编译问题

    以前都是在VC或者VS中编写c语言程序,今天尝试在Ubuntu下试着编写了一个简单的画正弦函数的程序,用到了头文件math.h,但是编译的时候报错了: 经查资料后才知道,数学函数位于libm.so库文 ...

  7. UBUNTU下Y86模拟器的安装和使用

    UBUNTU下Y86模拟器的安装和使用 由于上周在虚拟机中安装Y86模拟器中出现了一些问题并且没得到解决,所以上周实验是在实验楼上做的,这几天练习了UBUNTU下Y86模拟器的安装和使用. 参考博客: ...

  8. ubuntu下新建用户

    ubuntu下新建用户和RedHat系列的linux有点不一样 新建用户的命令是useradd,修改密码是passwd,如下: sudo useradd zhuhui sudo passwd 1234 ...

  9. ubuntu 下安装 texlive 并设置 ctex 中文套装

    1 安装 texlive2013 1.1 下载 texlive2013 下载地址:http://ftp.ctex.org/mirrors/CTAN/systems/texlive/Images/tex ...

随机推荐

  1. linux----------ab--性能测试工具

    ab.exe –n 10000 –c 100 localhost/index.php //其中-n代表请求数,-c代表并发数

  2. 总结ThinkPHP使用技巧经验分享(二)

    循环输出volist 还有别名 iterate 模版赋值:$User = D('User')$list = $User->findAll()$this->assign('list',$li ...

  3. web 安全的前期准备哦

    学习web安全  需要的软件  和 基础 基础会在以后发出来  软件  在网上都可以下 首先   你要有一款虚拟机软件 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样 ...

  4. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

  5. JAVA序列化和反序列化

    http://developer.51cto.com/art/201202/317181.htm http://blog.csdn.net/earbao/article/details/4691440 ...

  6. Ubuntu14.04安装CMake3.6.3

    准备工作:官网下载cmake-3.6.3.tar.gz(https://cmake.org/download/) 1.解压文件tar -xvf cmake-3.6.3.tar.gz,并修改文件权限ch ...

  7. apiCloud又拍云数据库操作经验

    1.在数据库表中有个relation字段,表示一对多(对应其他表的多个记录),这个字段比较奇怪,因为实际上这个字段里并未保存实际值.而是保存在对应表的字段中.但是对应表显示出来并没有这个字段.导出数据 ...

  8. JS子父窗口互相操作取值赋值的方法介绍

    $("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementById ...

  9. <script>中的代码

    <script type="text/javascript"> $(document).ready(function () { $.formValidator.init ...

  10. win7安装oracle11g64位提示环境变量Path长度超出

    解决办法:安装包以管理员方式运行