在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 ...
随机推荐
- Glacierskating测试记录
这个游戏本身已经很成熟了,要提什么建议的话也是吹毛求疵.... 不过个人来讲不是很喜欢这个游戏,喜欢程度排倒数第二吧....感觉游戏就是一个套路,掌握了套路就不好玩了.....优点是随时随地可以玩一把 ...
- Windows Phone 十二、设计器同步
在设计阶段为页面添加数据源 Blend或者VS的可视化设计器会跑我们的代码,然后来显示出来,当我们Build之后,设计器会进入页面的构造函数,调用InitializeComponent();方法来将U ...
- URL请求工具
工作中有个需求,定期请求多个URL.“定期”采用计划任务实现,请求URL,虽说start url可以实现,但不灵活.自己制作了个专门请求URL的工具,并记录请求结果. 控制台程序代码: class P ...
- 镁光c400-MTFDDAK064M固态硬盘更新固件
前段时间笔记本不停地假死机,就是那种系统停止响应,但鼠标依然有动作的死机,各种烦人,后来检测了下系统的温度,发现cpu轻易地上了75度,甚至会到94度,以为风扇该清理了,硅胶该换了,回想了一下,离上次 ...
- Yii2中多表关联查询(join、joinwith)
我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name ...
- oracle优化:避免全表扫描(高水位线)
如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的.而是扫描高水位线一下的所有块.有的时候有人经常说,我的表也不大呀,怎么 ...
- node平台截取图片模块——jimp
前几天介绍了一个简单的截图模块——iamges,虽然简单,但是功能还是有很多局限的地方. jimp的优势:1.简单,2.支持回调方式和ES6(promise)语法也可以链式调用 3. 丰富的api ...
- python之三层菜单递归
首先非常感谢11期的学长薜保库提供了一种非常实用函数递归方法,让实现三层菜单如此简单,不过对所遍历的嵌套字典或列表格式有所要求.有特定的环境下非常实用. 主要针对中国的各省市区进行展示,采用了百度的j ...
- 捷波朗 jabra BT3030 蓝牙耳机
蓝牙版本V2.0 通话时间 8小时 按键说明:轻敲 快按轻敲两下 在1.5秒内快速按两下按 大约 1秒钟按住 大约 4秒钟 充电提示绿灯闪亮 正在充电持续绿灯 已完全充满电 检查电量按 音量上调(+) ...
- HTML5学习小结
HTML5是用于取代1999年所制定的 HTML4.01和XHTML1.0标准的HTML标准版本.HTML5的第一份正式草案已于2008年1月公布:2012年12月,规范已经正式定稿.W3C计划在20 ...