在Ubuntu下使用 csapp.h 和 csapp.c
>它山之石可以攻玉。
对于《深入理解计算机系统》这本神人写就的神书, 我等凡人就不评论什么啦。
这本书的 第二,三 部分, 真的真的对我理解操作系统有很大的帮助。 (第一部分偏硬件,如果搞高性能,第一部分还是蛮重要的) 。 第一部分的的确确有些艰深, 从剖析汇编码, 窥探机器码, 到 理论上造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的更多相关文章
- 深入理解计算机中的 csapp.h和csapp.c
csapp.h其实就是一堆头文件的打包,在http://csapp.cs.cmu.edu/public/code.html 这里可以下载.这是<深入理解计算机系统>配套网站. 在头文件的# ...
- csapp 深入理解计算机系统 csapp.h csapp.c文件配置
转载自 http://condor.depaul.edu/glancast/374class/docs/csapp_compile_guide.html Compiling with the CS ...
- ubuntu 下wireshark 软件安装与使用
在ubuntu下,使用wireshark也是很有必要的.虽然可以使用tcpdump等工具. ubuntu:11.10 1. sudo apt-get install wireshark ...
- am335x在ubuntu下使用StarterWare编写裸机程序并在CCS中用Jlink调试
StarterWare在AM335X上的烧录运行 步骤:1.下载安装StarterWare,我们团购的SK需要02.00.00.07版本.最近外网访问慢,我上传到论坛.2.找一张miniSD卡,不需要 ...
- 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 ...
- Ubuntu下编译c文件时,遇到math.h头文件不能编译问题
以前都是在VC或者VS中编写c语言程序,今天尝试在Ubuntu下试着编写了一个简单的画正弦函数的程序,用到了头文件math.h,但是编译的时候报错了: 经查资料后才知道,数学函数位于libm.so库文 ...
- UBUNTU下Y86模拟器的安装和使用
UBUNTU下Y86模拟器的安装和使用 由于上周在虚拟机中安装Y86模拟器中出现了一些问题并且没得到解决,所以上周实验是在实验楼上做的,这几天练习了UBUNTU下Y86模拟器的安装和使用. 参考博客: ...
- ubuntu下新建用户
ubuntu下新建用户和RedHat系列的linux有点不一样 新建用户的命令是useradd,修改密码是passwd,如下: sudo useradd zhuhui sudo passwd 1234 ...
- ubuntu 下安装 texlive 并设置 ctex 中文套装
1 安装 texlive2013 1.1 下载 texlive2013 下载地址:http://ftp.ctex.org/mirrors/CTAN/systems/texlive/Images/tex ...
随机推荐
- 搭建Python+Django开发环境
第一步:安装python. 常见的windows系统,直接python网站下载 最新的版本python3.5. python安装好之后,配置好环境变量.使得python和 pip命令能够正常使用. 第 ...
- springmvc之格式化要显示的小数或者日期。
把保存的小数或者日期按照想要的格式显示. 首先导入jar包joda-time-2.3.jar,下载地址http://pan.baidu.com/s/1gfNuUfp 这里使用注解的方式进行格式化. 创 ...
- 【皇甫】☀ 图_substring
substring是啥?
- activiti 里面各个方法理解
/** Return the intent that started this activity. */public Intent getIntent() { return mIntent;} pub ...
- mysql时间格式化,按时间段查询的MySQL语句
描述:有一个会员表,有个birthday字段,值为'YYYY-MM-DD'格式,现在要查询一个时间段内过生日的会员,比如'06-03'到'07-08'这个时间段内所有过生日的会员. SQL语句: Se ...
- Learning From Data 第一章总结
之前上了台大的机器学习基石课程,里面用的教材是<Learning from data>,最近看了看觉得不错,打算深入看下去,内容上和台大的课程差不太多,但是有些点讲的更深入,想了解课程里面 ...
- php 读取json数据文本所遇到的问题
json数据属于特殊的字符串,一般自己写的json数据不要误加空格,回车,换行, 若是从其他文件读取过来的json数据很有可能带有空格,回车,换行等符号,导致使用json_decode()转诚数组失败 ...
- SQLServer 游标 (A)
游标 游标分为客户端游标和服务器端游标.Sql通过游标可以对一个结果集进行逐行处理.对于使用服务器端游标的过程有:声明.打开.读取.关闭.释放. 1 声明游标 1.1 SQL-92标准的声明 Decl ...
- Node判断文件是否链接
通过fs.stat(), fs.lstate() and fs.fstate()都可以得到fs.Stats对象, 其中stats.isSymbolicLink()方法用来判断是否链接, 然而一直都不成 ...
- MAC OS UI设计
对比MAC OS 10.9到10.11的UI设计,苹果曾经卓尔不群的审美观逐步变得泯然众人. 当苹果也跟上扁平化的浪潮,许多搞设计的朋友都一时难以接受,曾经潮流的引领者变成了亦步亦趋的跟随者. MAC ...