>它山之石可以攻玉。
对于《深入理解计算机系统》这本神人写就的神书, 我等凡人就不评论什么啦。
这本书的 第二,三 部分, 真的真的对我理解操作系统有很大的帮助。 (第一部分偏硬件,如果搞高性能,第一部分还是蛮重要的) 。 第一部分的的确确有些艰深, 从剖析汇编码, 窥探机器码, 到 理论上造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