自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (21)
  • 收藏
  • 关注

原创 CentOS7离线安装ntpdata

需要的安装包:autogen-libopts-5.18-5.el7.x86_64.rpmntpdate-4.2.6p5-18.el7.centos.x86_64.rpmntp-4.2.6p5-18.el7.centos.x86_64.rpm安装方法:4. 优先安装autogen[root@master01 ntpdata-pkg_for-not-net]# rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpmwarning: autogen-libo

2020-08-25 12:11:38 1676

ntpdata-rpm-centos7.zip

centos 离线安装ntp 依赖包: autogen-libopts-5.18-5.el7.x86_64.rpm ntpdate-4.2.6p5-25.el7.centos.2.x86_64.rpm ntp-4.2.6p5-25.el7.centos.2.x86_64.rpm

2020-08-25

深度实践KVM

内容简介编辑 虚拟化技术是大数据和云计算应用中的核心技术,经过几年的友展,KVM已经非常成熟和稳定,逐渐取代Xen等商业虚拟化技术和产品,成为该领域事实上的标准。因为采用KVM技术的业务规模都比较大,生产环境大多比较复杂,加上KVM整个技术生态中涉及的技术较多,使用起来有一定的门槛,企业的学习成本较高。 当KVM技术在国内鲜有人使用时,本书作者团队就开始钻研并在生产环境中使用,短短几年内,就为公司节省了上亿的运莒成本,帮助公司多个处于生命周期末的游戏项目实现扭亏为盈。本书中所有的知识和经验都来自国内一线的互联网公司的生产环境,比如金山西山居、盛大游戏等,最大的特点就是业务规模大、环境复杂,非常具有代表性,极为珍贵。 本书从多个维度详细讲解了KVM虚拟化原理、技术及性能调优、软硬件选型,生产环境虚拟化项目实施方法,开源管理平台介绍及部署,虚拟化后端存储方案,开源分布式文件系统GIusterFS、Ceph在虚拟化中的使用方法,虚拟化监控、报警、应急方案的制定,并附有大量生产环境案例。 [1] 作者简介编辑 肖力,资深运维专家,拥有15年运维经验,就职于金山西山居,担任系统运维经理,曾就职于盛大游戏,在运维圈有极大的影响力。国内KVM专家,从2009年开始研究KVM技术,是国内较早在生产环境大规模实践KVM的人之一,积累了非常丰富的经验。 热衷于技术传播,一直在无私地为运维领域的发展做贡献,维护有微信订阅号“KVM虚拟化实践”,分享了大量KVM和运维领域的干货内容,同时还运营着多个运维相关的微信群。此外,他还是华章“运维前线”系列图书的总策划,无偿地在组织大量愿意无私分享经验的运维工程师们来参与写作。 汪爱伟,资深运维专家,安居客资深系统工程师,曾就职于阿里云、UCloud、盛大游戏等知名互联网公司。对KVM技术有深入的研究,在虚拟化集群方面有丰富的生产环境经验,擅长KVM虚拟化项目的实施和运维。 杨俊俊,资深虚拟化技术专家和运维工程师,就职于盛大,担任盛大游戏公有云“G云”运维负责人和Intel联合实验室技术负责人,曾任职51.com,精通虚拟化项目的评估与实施,精通开源分布式文件系统在生产环境的运维与实践。 赵德禄,资深运维工程师和虚拟化工程师,就职于携程,担任高级云平台运维工程师,曾就职于盛大游戏,担任资深虚拟化工程师。精通KVM、OpenStack、OpenvSwitch、桌面虚拟化等技术,在生产环境下的实践经验非常丰富。 [1] 书籍目录编辑 本书赞誉   前 言   第一篇 KVM技术详解与实践   第1章 企业虚拟化选型与KVM介绍 2   1.1 KVM的前世今生 2   1.2 KVM与常用企业级虚拟化产品的PK 7   1.3 判断企业是否适合使用KVM的标准 9   1.4 本章小结 10   第2章 开始自己的第一台虚拟机 11   2.1 服务器BIOS设置 11   2.2 宿主机CentOS 6.5、CentOS 7系统安装与配置技巧 13   2.3 第一台虚拟机安装 15   2.4 本章小结 21   第3章 CPU、内存虚拟化技术与应用场景 22   3.1 NUMA技术与应用 22   3.1.1 KVM虚拟机NUMA调优 24   3.1.2 CPU绑定操作方法 27   3.2 CPU热添加与应用 32   3.3 CPU host-passthrough 技术与应用 36   3.4 CPU Nested 技术与配置方法 38   3.5 KSM技术与应用 39   3.6 内存气球技术详解与应用 40   3.7 内存限制技术与应用 43   3.8 巨型页内存技术与应用 44   3.9 本章小结 47   第4章 网络虚拟化技术与应用场景 48   4.1 半虚拟化网卡技术详解 48   4.1.1 半虚拟化网卡的配置 49   4.1.2 全虚拟化网卡、半虚拟化网卡性能比较 50   4.1.3 全虚拟化网卡、半虚拟化网卡的应用场景 63   4.2 MacVTap和vhost-net技术原理与应用 63   4.2.1 MacVTap技术与应用 64   4.2.2 vhost_net技术 66   4.3 网卡的中断与多队列 66   4.4 网卡PCI Passthrough技术 71   4.5 SR-IVO虚拟化技术 72   4.6 虚拟化软件交换机Open vSwitch的安装与配置 75   4.6.1 Open vSwitch安装 75   4.6.2 Open vSwitch典型配置 77   4.7 多网卡绑定与建桥 79   4.8 本章小结 82   第5章 KVM磁盘虚拟化技术与应用场景 83   5.1 磁盘虚拟化方式性能比较与应用场景 83   5.1.1 QEMU磁盘虚拟化方式概述 83   5.1.2 IDE与Virtio性能比较测试 84   5.2 Virtio磁盘缓存方式详解、性能比较与应用场景 85   5.2.1 磁盘缓存详解 86   5.2.2 缓存方式的性能比较测试 87   5.2.3 缓存方式的应用场景 89   5.3 磁盘镜像格式 89   5.3.1 QEMU支持的磁盘镜像格式 89   5.3.2 裸设备使用 96   5.3.3 KVM虚拟机镜像管理利器guestfish 97   5.3.4 raw、qcow2、裸盘、lvm性能比较 106   5.3.5 磁盘镜像格式的应用场景 107   5.4 文件系统块对齐 108   5.4.1 什么是块对齐 108   5.4.2 块对齐与块不对齐性能比较 109   5.4.3 生产环境如何配置块对齐 110   5.5 SSD在KVM虚拟化中的使用实践 111   5.5.1 SSD原理与写放大 111   5.5.2 SSD在KVM中的使用 112   5.5.3 Flachcache配置与性能测试 117   5.5.4 DM-cache配置 120   5.5.5 LVM cache配置与性能测试 122   5.5.6 生产环境中SSD使用要点 123   5.6 本章小结 126   第6章 KVM虚拟机的资源限制 127   6.1 哪些场景要做虚拟机的资源限制 127   6.2 使用CGroups 130   6.3 KVM虚拟机CPU资源限制配置 142   6.4 KVM虚拟机网络资源限制 144   6.5 KVM虚拟机磁盘资源限制 150   6.6 本章小结 151   第7章 物理机转虚拟机实践 152   7.1 哪些应用场景适合做物理机转虚拟机 152   7.2 P2V的技术实施方案 152   7.3 Windows系统物理机转虚拟机的操作方法 153   7.3.1 WinPE的制作方法 153   7.3.2 Windows系统P2V操作方法 155   7.4 Linux物理服务器转换虚拟机操作 155   7.5 使用virt-p2v工具进行P2V转换 157   7.6 P2V经验总结 160   7.7 关于V2V 160   7.8 本章小结 160   第8章 KVM桌面虚拟化实践 161   8.1 桌面虚拟化简介及Spice协议 161   8.2 桌面虚拟化实践经验 162   8.3 本章小结 167   第二篇 分布式文件系统   第9章 几种常见开源文件系统在KVM中的应用 170   9.1 演示环境基础配置 170   9.2 DRBD在KVM中的应用 172   9.2.1 DRBD介绍 172   9.2.2 DRBD搭建方法及在KVM中的应用 173   9.2.3 DRBD在KVM虚拟化中的优化方案 183   9.3 GlusterFS在KVM虚拟化中的应用 184   9.3.1 GlusterFS介绍 184   9.3.2 GlusterFS集群搭建与使用 189   9.3.3 GlusterFS在KVM虚拟化中的应用 195   9.3.4 GlusterFS在KVM虚拟化中的优化方案 198   9.4 Sheepdog在KVM中的应用 199   9.4.1 Sheepdog介绍 199   9.4.2 Sheepdog搭建方法及在KVM中的应用 201   9.5 MooseFS在KVM中的应用 207   9.5.1 MooseFS介绍 208   9.5.2 MFS搭建方法及在KVM虚拟化中的应用 208   9.6 本章小结 213   第10章 Ceph在KVM虚拟化中的应用与故障处理 214   10.1 Ceph简介 214   10.2 Ceph部署方法及在KVM中的应用 217   10.2.1 使用ceph-deploy工具部署Ceph 217   10.2.2 挂载CephFS 221   10.2.3 通过Librbd方式使用Ceph RBD 223   10.2.4 使用内核方式挂载并使用Ceph RBD 226   10.3 CRUSH算法介绍及调优方法 228   10.3.1 CRUSH算法介绍 228   10.3.2 CRUSH算法调优方法 230   10.4 多角度评估Ceph在KVM虚拟化环境中的应用 234   10.5 Ceph生产环境搭建案例 240   10.5.1 使用CephFS集中备份虚拟机 240   10.5.2 使用Librbd将虚拟机运行在Ceph RBD 241   10.5.3 在CephFS上创建qcow2文件作为云硬盘 242   10.6 Ceph常见故障处理 242   10.6.1 Ceph集群监控状态检查 243   10.6.2 Ceph常见错误提示的含义与处理方法 244   10.7 本章小结 245   第三篇 KVM虚拟化管理平台   第11章 利用OpenStack管理KVM 248   11.1 OpenStack搭建 248   11.1.1 OpenStack简介 248   11.1.2 控制节点的安装 249   11.1.3 计算节点的安装 266   11.2 OpenStack实用技巧 269   11.2.1 RabbitMQ Cluster搭建 269   11.2.2 利用Haproxy和Keepalived实现控制节点高可用 271   11.2.3 冷迁移虚拟机的方法 277   11.3 本章小结 277   第12章 利用OpenNebula管理KVM 278   12.1 OpenNebula架构 278   12.1.1 OpenNebula架构介绍 278   12.1.2 OpenNebula组件介绍 279   12.2 在KVM中使用OpenNebula 280   12.2.1 在CentOS 6.5上快速搭建OpenNebula 280   12.2.2 使用OpenNebula创建第一台KVM虚拟机 285   12.2.3 使虚拟机硬盘创建在宿主机本地硬盘上 288   12.3 OpenNebula常见故障处理 291   12.4 本章小结 293   第13章 其他管理平台介绍 294   13.1 ConVirt管理平台介绍 294   13.1.1 ConVirt的理念 294   13.1.2 ConVirt的架构 295   13.2 CloudStack管理平台介绍 295   13.3 oVirt管理平台介绍 297   13.4 WebVirtMgr管理平台介绍 299   13.5 如何选择管理平台 303   13.6 本章小结 304   第四篇 KVM虚拟化项目实施   第14章 业务性能评估与压力模型建立 306   14.1 Linux 系统性能数据采集原则与方法 306   14.2 Linux 系统压力模型建立 311   14.3 Windows系统性能数据采集原则与方法 314   14.4 Windows 系统压力模型建立 317   14.5 本章小结 319   第15章 宿主机选型与基础性能测试 320   15.1 宿主机CPU选型原则 320   15.2 宿主机内存选型注意事项 322   15.3 宿主机硬盘选型 324   15.4 RAID卡选型 326   15.5 服务器网卡选型 327   15.6 宿主机性能基准测试实践 328   15.7 本章小结 345   第16章 虚拟机镜像制作、配置与测试 346   16.1 Windows虚拟机制作方法 346   16.1.1 Windows镜像制作 346   16.1.2 Windows虚拟机sysprep初始化封装 361   16.2 Linux镜像制作方法 362   16.2.1 RHEL/CentOS镜像制作方法 362   16.2.2 Ubuntu、Debian虚拟机配置注意点 364   16.3 虚拟机自动配置IP的实现办法 365   16.3.1 通过DHCP给虚拟机配置IP 365   16.3.2 通过Libvirt实现虚拟机自动配置IP 365   16.3.3 笔者生产环境虚拟机IP自动配置的方法 365   16.4 虚拟机镜像测试 375   16.5 本章小结 375   第17章 单机虚拟化技术与生产环境实践 376   17.1 单机虚拟化技术与应用场景 376   17.1.1 单机虚拟化的优势和劣势 377   17.1.2 单机虚拟化技术 378   17.1.3 单机虚拟化应用场景 380   17.2 单机虚拟化生产环境注意点 381   17.2.1 单机虚拟化灾备与应急方案 381   17.2.2 单机虚拟化生产环境部署实践 382   17.3 本章小结 385   第18章 KVM虚拟化集群技术与应用场景 386   18.1 虚拟化集群设计思路与架构 386   18.2 虚拟化集群的实施流程与技术方案 389   18.3 虚拟化集群搭建 392   18.3.1 计算节点配置与管理 392   18.3.2 网络设计与配置 403   18.3.3 虚拟机迁移管理 404   18.3.4 虚拟化集群的备份与恢复 407   18.4 Dell EqualLogic存储的管理实践经验 414   18.5 本章小结 419   第19章 业务迁移到虚拟化环境流程 420   19.1 性能评估与测试环境测试 420   19.2 上线前的检查工作 428   19.3 小规模部署及逐步切换到虚拟化环境 429   19.4 本章小结 430   第20章 宿主机自动化运维管理 431   20.1 Puppet简介与安装部署 431   20.2 利用Puppet管理宿主机的运维架构设计 436   20.3 利用Puppet配置宿主机初始化操作 441   20.4 利用Puppet管理宿主机配置与更新 442   20.5 利用Puppet推送宿主机的非一致性配置 445   20.6 本章小结 449   第21章 虚拟化监控、报警与应急响应方案 450   21.1 虚拟化监控内容 450   21.1.1 宿主机CPU监控要点 450   21.1.2 宿主机内存监控注意点 455   21.1.3 宿主机网络监控注意点 458   21.1.4 宿主机磁盘监控注意点 460   21.1.5 宿主机层面监控虚拟机的方法 461   21.2 监控软件Cacti、Zabbix 463   21.2.1 用Cacti监控宿主机 464   21.2.2 用Zabbix监控宿主机 471   21.3 应急方案 487   21.3.1 应急方案制定注意要点 487   21.3.2 单机虚拟化应急方案 491   21.3.3 集群虚拟化应急方案 495   21.4 本章小结 497   第五篇 KVM虚拟化典型案例   第22章 生产环境问题案例与分析 500   22.1 游戏在虚拟机上非常慢的案例 500   22.2 虚拟机流量过高引起网络风暴的案例一 502   22.3 虚拟机流量过高引起网络风暴的案例二 517   22.4 其他生产环境问题案例 520   22.4.1 共享存储集群虚拟机迁移故障案例 520   22.4.2 宿主机异常关机后虚拟机无法启动案例 522   22.4.3 宿主机使用CentOS 5.6系统问题案例 523   22.4.4 Windows虚拟机网络闪断、不通问题案例 523   22.4.5 Windows 7虚拟机只能使用2个CPU案例 524   22.4.6 生产环境非常奇怪的一个案例 524   22.4.7 U盘在虚拟机上挂载问题案例 526   22.4.8 HP ILO4固件Bug引起宿主机重启案例 528   22.4.9 一次机房断电引起的问题案例 529   22.4.10 CPU绑定问题案例 531   22.4.11 生产环境存储故障导致50个虚拟机丢失案例 532   22.4.12 生产环境Ubuntu虚拟机故障问题案例 533   22.5 本章小结 538   附录 笔者推荐的KVM学习资料 539

2018-10-31

写给大家看的c++ 书

图灵出品,C++ 入门好书不罗嗦,自己来了看

2014-07-01

实战LINUX SOCKET编程

实战LINUX SOCKET 淘宝买不到的书 易学易懂 敢要高分不是吹的

2014-06-30

Lighttpd - Andre Bogus.pd

lighttpd 开发手册 高清英文版

2014-06-30

Hadoop权威指南 第2版 rar

Hadoop权威指南 第2版 rar

2014-06-30

cli_parser-0.5.tar.gz

命令解释器cli_parser-0.5.tar.gz

2014-01-26

apue CODE 示例

UNIX 环境高级编程 代码示例

2014-01-15

byte_of_vim_v051.pdf

A Byte of Vim v0.51 (for Vim version 7) Introduction "A Byte of Vim" is a book which aims to help you to learn how to use the Vim editor (version 7), even if all you know is how to use the computer keyboard. The first part of this book is meant for new users who want to understand what Vim is and learn how to use it. The second part of this book is for people who already know how to use Vim and want to learn about features that make Vim so powerful, such as windows and tabs, personal information management, making it a programmer's editor, how to extend Vim with your own plugins, and more. Read Now Read the whole book online now. If you find any typos/spelling mistakes, you are encouraged to click on the 'Edit' link in the left sidebar and fix it! Buy the Book A printed hardcopy of the book can be purchased [1] for your offline reading pleasure, and to support the continued development and improvement of this book. Alternatively, please consider making a donation [2]. Download • PDF (1.5MB) [3] • Mediawiki XML dump (197K) [4] (for advanced users only) What Readers Say "Well done!!! I've been only using vim for like 2/3 weeks now, and thus I can say that it's just perfect for beginners like me!!!" -- Jay [5] "The book is very good and fun to read too. Thank you for sharing it." -- Yosi Izaq [6] "Your books should sell like hot cakes for their way of presentation." -- Deepak [7] "Awesome! Thank you for all of your hard work. It is especially nice that the beginning starts the reader off gradually. After using vim for a couple of years I've forgotten how weird it seems at first, so I probably wouldn't explain it that good to someone. I will be sure to share your book to spread the vim propaganda. ;-)" -- Joseph Sullivan [8] Vim 3 What I am trying to say is if you have basic computer competency you should immediately get Vim on your machine and improve your life. The best place to learn about is to read Swaroop C H's awesome eBook A Byte of Vim, it will revolutionize how you think about text editors in the future. -- "wooden nickels" [9] "Have been thumbing through 'byte of vim'. learning a ton even having used vim for years." -- Josh Nichols [10] Great Book !! Although I use vim everyday as an editor as well as an ide, the book makes u realise how much more it can do. -- Raseel Bhagat [11] Wonderful! This was one most-required-book. I was a vim user for the past years, but never have seen these much of facilities inside that! Thanks for the Book, Swaroop! -- Hiran Venugopalan [12] What a nice book. I'm a long-time vim user, but never managed to get my head around vim scripting (apart from fixing some bugs in others' scripts). This is the best introduction to Vim scripting (writing plugins, syntax files, ...) I have seen so far. Thanks for putting it online! -- Anonymous (132.230.122.35) [13] "Thank you Swaroop! I've begun reading it and must say it's very well written. And I have no doubts this great community of us vim users here will improve it through fixes, additions or small corrections -- the wiki format is a great idea." -- Eduard Fabra [14] Also: • The book was listed as the top tip for Dec 2008 on the Official Vim Tips wiki [15]. License and Terms 1. This book is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported [16] license. • This means: • You are free to Share i.e. to copy, distribute and transmit this book • You are free to Remix i.e. to adapt this book • Under the following conditions: • Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of this book). • Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. • For any reuse or distribution, you must make clear to others the license terms of this book. • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the author's moral rights. Vim 4 2. Attribution must be shown by linking back to http:/ / www. swaroopch. com/ notes/ Vim and clearly indicating that the original text can be fetched from this location. 3. All the code/scripts provided in this book is licensed under the 3-clause BSD License [17] unless otherwise noted. 4. Some sample text used in this book has been retrieved from http:/ / en. wikipedia. org and http:/ / en. wikiquote. org under the GNU Free Documentation License [18]. 5. Volunteer contributions to this original book must be under this same license and the copyright must be assigned to the main author of this book.

2014-01-15

Makefile编程.pdf

Makefile 编辑 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 目录 1定义和概述 2自动化编译 3主要功能 make命令 Makefile的规则 文件定义与命令 有效的宏引用 预定义变量 1定义和概述 Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile 文件的编写。 所要完成的Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。 make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。 例子[1]:(一个相对复杂的例子,嵌入式编程中经常用到的,详细情况请参考 嵌入式linux应用开发完全手册) 01 src := $(shell ls *.c) /*把当前目录下所有c源代码赋给变量src*/ 02 obj := $(patsubst %.c,%.o,$(src)) /*调用makefile 中的函数patsubst, 用.o文件代替.c文件*/ 03 04 test: $(objs) 05 gcc -o $@ $^ 06 07 %.o:%.c 08 gcc -c -o $@ $< 09 10 clean: 11 rm -f test *.o 上述Makefile中的“$@", "$^", "$<" 称为自动变量。 2自动化编译 makefile makefile(3张) makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。 3主要功能 Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。 在 UNIX 系统中,习惯使用 Makefile 作为 makefile 文件。如果要使用其他文件作为 makefile,则可利用类似下面的 make 命令选项指定 makefile 文件: make命令 $ make -f Makefile.debug 例如,一个名为prog的程序由三个C源文件filea.c、fileb.c和filec Makefile文件工程样例 Makefile文件工程样例 .c以及库文件LS编译生成,这三个文件还分别包含自己的头文件a.h 、b.h和c.h。通常情况下,C编译器将会输出三个目标文件filea.o、fileb.o和filec.o。假设filea.c和fileb.c都要声明用到一个名为defs的文件,但filec.c不用。即在filea.c和fileb.c里都有这样的声明: #include "defs" 那么下面的文档就描述了这些文件之间的相互联系: 0 #It is a example for describing makefile 注释行 1 prog : filea.o fileb.o filec.o #指定prog由三个目标文件filea.o、fileb.o和filec.o链接生成 2 cc filea.o fileb.o filec.o -LS -o prog #如何从prog所依赖的文件建立可执行文件 3 filea.o : filea.c a.h defs #指定filea.o目标文件,以及它们所依赖的.c和.h文件以及defs文件 4 cc -c filea.c #如何从目标所依赖的文件建立目标,即如何从filea.c建立filea.o 5 fileb.o : fileb.c b.h defs #指定fileb.o目标文件,以及它们所依赖的.c和.h文件以及defs文件 6 cc -c fileb.c #如何从目标所依赖的文件建立目标,即如何从fileb.c建立fileb.o 7 filec.o : filec.c c.h #指定filec.o目标文件,以及它们所依赖的.c和.h文件 8 cc -c filec.c #如何从目标所依赖的文件建立目标,即如何从filec.c建立filec.o 这个描述文档就是一个简单的makefile文件。我们针对上例的代码方面进行一些基础性说明:CC 是一个全局变量,它指定你的Makefile所用的编译器,一般默认是gcc;.o文件是unix下的中间代码目标文件,就如同在windows下的.obj文件一样,在unix下生成.o文件的过程叫编译(compile),将无数.o文件集合生成可执行文件的过程叫链接(link);有时会在unix界面下看到.a文件,那是Archive File,相当于windows下的库文件Library File,.a文件作用是:由于源文件太多(上例是指.c和.h文件过多),编译生成的中间目标文件(.o文件)太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,这个包就是.a文件。[2] 当filea.c或a.h文件在编译之后又被修改,则 make 工具可自动重新编译filea.o,如果在前后两次编译之间,filea.c 和a.h 均没有被修改,而且filea.o还存在的话,就没有必要重新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make 工具可避免许多不必要的编译工作。当然,利用Shell脚本也可以达到自动编译的效果,但是,Shell 脚本将全部编译任何源文件,包括哪些不必要重新编译的源文件,而 make 工具则可根据目标上一次编译的时间和目标所依赖的源文件的更新时间而自动判断应当编译哪个源文件。 Makefile文件准备好之后,接着在Makefile文件所在的目录下敲入make这个命令就可以了,根据Makefile文件,以告诉make命令需要怎么样的去编译和链接目标程序。 Makefile的规则 让我们先来粗略地看一看Makefile的规则。[3] target ... : prerequisites ... command ... ... 目标:依赖 执行指令 ... target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。 ① prerequisites就是,要生成那个target所需要的文件或是目标。 ② command也就是make需要执行的命令。(任意的Shell命令) 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行(command一定要以Tab键开始,否者编译器无法识别command),减少重复编译,提高了其软件工程管理效率。 文件定义与命令 Makefile文件作为一种描述文档一般需要包含以下内容: ◆宏定义 命令行中执行makefile 命令行中执行makefile ◆ 源文件之间的相互依赖关系 ◆ 可执行的命令 Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。 有效的宏引用 $(CFLAGS) $Z $(Z) 其中最后两个引用是完全一致的。 需要注意的是一些宏的预定义变量,在Unix系统中,$*、$@、$?和$<四个特殊宏的值在执行命令的过程中会发生相应的变化,而在GNU make中则定义了更多的预定义变量。关于预定义变量的详细内容,宏定义的使用可以使我们脱离那些冗长乏味的编译选项,为编写makefile文件带来很大的方便。 # Define a macro for the object files OBJECTS= filea.o fileb.o filec.o # Define a macro for the library file LIBES= -LS # use macros rewrite makefile prog: $(OBJECTS) cc $(OBJECTS) $(LIBES) -o prog ……--------------------------------------------------------- 此时如果执行不带参数的make命令,将连接三个目标文件和库文件LS;但是如果在make命令后带有新的宏定义: make "LIBES= -LL -LS" #如何实现? 则命令行后面的宏定义将覆盖makefile文件中的宏定义。若LL也是库文件,此时make命令将连接三个目标文件以及两个库文件LS和LL。 在Unix系统中没有对常量NULL作出明确的定义,因此我们要定义NULL字符串时要使用下述宏定义: STRINGNAME= //这里有待考证 makefile 中的变量(宏) GNU 的 make 工具除提供有建立目标的基本功能之外,还有许多便于表达依赖性关系 以及建立目标的命令的特色。其中之一就是变量或宏的定义能力。如果你要以相同的编译 选项同时编译十几个 C 源文件,而为每个目标的编译指定冗长的编译选项的话,将是非 常乏味的。但利用简单的变量定义,可避免这种乏味的工作: # Define macros for name of compiler CC = gcc # Define a macr o for the CC flags CCFLAGS = -D_DEBUG -g -m486 # A rule for building a object file test.o: test.c test.h $(CC) -c $(CCFLAGS) test.c 在上面的例子中,CC 和 CCFLAGS 就是 make 的变量。GNU make 通常称之为变量, 而其他 UNIX 的 make 工具称之为宏,实际是同一个东西。在 makefile 中引用变量的值 时,只需变量名之前添加 $ 符号,如上面的 $(CC) 和 $(CCFLAGS)。 GNU make 有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。表 13-2 给出了一些主要的预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己 的预定义变量。 表 13-2 GNU make 的主要预定义变量 预定义变量 含义 $* 不包含扩展名的目标文件名称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $< 第一个依赖文件的名称。 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@ 目标的完整名称。 $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。 $% 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为 (image.o),则 $@ 为 ,而 $% 为 image.o。 AR 归档维护程序的名称,默认值为 ar。 ARFLAGS 归档维护程序的选项。 AS 汇编程序的名称,默认值为 as。 ASFLAGS 汇编程序的选项。 CC C编译器的名称,默认值为 cc。 CFLAGS C编译器的选项。 CPP C 预编译器的名称,默认值为 $(CC) -E。 CPPFLAGS C预编译的选项。 CXX C++编译器的名称,默认值为 g++。 CXXFLAGS C++编译器的选项。 FC FORTRAN编译器的名称,默认值为 f77。 FFLAGS FORTRAN编译器的选项。 Makefile以文件名:文件名的形式比较冒号右边的文件是不是较左边的文件有更新,如果有更新则执行下一行的程序代码。因此Makefile可以把文件关联起来

2014-01-15

TCPIP协议详解卷III:事务.pdf

TCP/IP详解卷3:TCP实务协议、HTTP、NNTP和UNIX域协议 机械工业出版社 ISBN:9787111075684 定价:35元 内容简介: 第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠; HTTP (超文本传送协议),这是飞速扩展中的万维网的基础; NNTP (网络新闻传送协议),这是Usennet新闻系统的基础; UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。

2014-01-15

TCPIP协议详解卷II:实现.pdf

CP/IP 详解:卷1卷2卷3 作  者: (美)史蒂文斯(W.RichardStevens) 著,范建华等译 出 版 社:机械工业出版社 出版时间: 字  数: 版  次: 1 页  数: 423 印刷时间: 开  本: 印  次: 纸  张: I S B N : 9787111075660 定价:¥45.00 编辑推荐 本书是网络构建原型——4.4BSD的建造者的倾力之作,《TCP/IP解析》中的第1卷,主要讲述TCP/IP协议方面的内容。与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。全书内容实用性强,是在校生学习TCP/IP知识的良师益友。 内容简介 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 作者简介 W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述 第2章 链路层 第3章 IP:网际协议 第4章 ARP:地址解析协议 第5章 RARP:逆地址解析协议 第6章 ICMP:Internet控制报文协议 第7章 Ping程序 第8章 Traceroute程序 第9章 IP选路 第10章 动态选路协议 第11章 UDP:用户数据报协议 第12章 广播和多播 第13章 IGMP:Internet组管理协议 第14章 DNS:域名系统 第15章 TFTP:简单文件传送协议 第16章 BOOTP: 引导程序协议 第17章 TCP:传输控制协议 第18章 TCP连接的建立与终止 第19章 TCP的交互数据流 第20章 TCP的成块数据流 第21章 TCP的超时与重传 第22章 TCP的坚持定时 第23章 TCP的保活定时器 第24章 TCP的未来和性能 第25章 SNMP:简单网络管理协议 第26章 Telnet和Rlogin:远程登录 第27章 FTP:文件传送协议 第28章 SMTP:简单邮件传送协议 第29章 网络文件系统 第30章 其他的TCP/IP应用程序 附录A tcpdump程序 附录B 计算机时钟 附录C sock程序 附录D 部分习题的解答 附录E 配置选项 附录F 可以免费获得的源代码 参考文献 缩略语 TCP/IP详解 (卷2:实现) 现货 作  者: (美)莱特(Wright,G.R.)(美)史蒂文斯(Stevens,W.R.)著;陆雪莹 等译 出 版 社:机械工业出版社 出版时间: 2008-6-1 字  数: 版  次: 1 页  数: 901 印刷时间: 开  本: 16开 印  次: 纸  张: I S B N : 9787111075677 定价:¥78.00 编辑推荐 “我在全国各地教授Cisc0联网课程.每本新的有名的数据通信的书我都听说了,因为我的学生们拿它们作为课程的参考书。Stevens的《TCP/IP详解卷1 协议》的到来如同一枚炸弹的爆炸……学生们被这本书所倾倒。我刚读完《TCP/IP详解卷2:实现》。如果说卷1像一枚炸弹,则卷2就是一枚重磅炸弹!” “在读完Stevens的《TCP/IP详解卷1协议》后,我认为很难再有另一本如此有用的书了,但卷2就是这样一本书。有些人可能会问,如果你不是一个专职的网络程序员,如何让这本书适合于你。因为在我最初使用UNIX的日子里,回答‘这到底是如何工作的?’的标准答案是‘看源代 码’。用这本书,你不仅能看源代码,还有一个最清晰的解释:它们是如何互相配合起来的。” 《TCP/IP详解》系列覆盖了TCP/IP的许多方面.提供了一个高效直观的方法来学习联网协议族。 《TCP/IP详解卷2:实现》详尽地说明了TCP/IP协议是如何实现的。目前还没有更多的 书——此卷是唯一一本书,本书全面讲解了来源于44BSD—Lite版本的事实上的标准实现.这个 实现是运行在世界上成千上万个系统上的TCP/IP实现的基础。 500个示例总共15000行代码都是真正正在使用的代码,《TCP/IP详解卷2:实现》使用一种举例说明的方法来帮助你精通TCP/IP的实现。你会掌握以下问题:插口API和协议族之间的关系,一个主机实现和一个路由器实现之间的区别等。另外本书覆盖了4.4BSD—Lite版本的最新特性,包括多播,长肥管道支持、窗口缩放、时间戳选项、防止序列号环绕及很多其他主题。 本书覆盖范围广,它基于一个当前正使用的标准,并且有详尽的示例,因此它是任何使用TCP/IP的人员一个不可缺少的资源。 本书是“TCP/IP详解系列”的延续。主要内容包括:TCP事务协议,即T/TCP,这是对TCP的扩展,使客户-服务器事务更快、更高效和更可靠;TCP/IP应用,主要是HTTP和NNTP;UNIX域协议,这些协议提供了进程之间通信的一种手段。当客户与服务器进程在同一台主机上时,UNIX域协议通常要比TCP/IP快一倍。本书同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。适用于希望理解TCP/IP如何工作的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 TCP/IP详解卷3:TCP实务协议、HTTP、NNTP和UNIX域协议 机械工业出版社 ISBN:9787111075684 定价:35元 内容简介: 第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠; HTTP (超文本传送协议),这是飞速扩展中的万维网的基础; NNTP (网络新闻传送协议),这是Usennet新闻系统的基础; UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。

2014-01-15

TCP/IP详解 卷1 PDF

CP/IP 详解:卷1卷2卷3 作  者: (美)史蒂文斯(W.RichardStevens) 著,范建华等译 出 版 社:机械工业出版社 出版时间: 字  数: 版  次: 1 页  数: 423 印刷时间: 开  本: 印  次: 纸  张: I S B N : 9787111075660 定价:¥45.00 编辑推荐 本书是网络构建原型——4.4BSD的建造者的倾力之作,《TCP/IP解析》中的第1卷,主要讲述TCP/IP协议方面的内容。与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。全书内容实用性强,是在校生学习TCP/IP知识的良师益友。 内容简介 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 作者简介 W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述 第2章 链路层 第3章 IP:网际协议 第4章 ARP:地址解析协议 第5章 RARP:逆地址解析协议 第6章 ICMP:Internet控制报文协议 第7章 Ping程序 第8章 Traceroute程序 第9章 IP选路 第10章 动态选路协议 第11章 UDP:用户数据报协议 第12章 广播和多播 第13章 IGMP:Internet组管理协议 第14章 DNS:域名系统 第15章 TFTP:简单文件传送协议 第16章 BOOTP: 引导程序协议 第17章 TCP:传输控制协议 第18章 TCP连接的建立与终止 第19章 TCP的交互数据流 第20章 TCP的成块数据流 第21章 TCP的超时与重传 第22章 TCP的坚持定时 第23章 TCP的保活定时器 第24章 TCP的未来和性能 第25章 SNMP:简单网络管理协议 第26章 Telnet和Rlogin:远程登录 第27章 FTP:文件传送协议 第28章 SMTP:简单邮件传送协议 第29章 网络文件系统 第30章 其他的TCP/IP应用程序 附录A tcpdump程序 附录B 计算机时钟 附录C sock程序 附录D 部分习题的解答 附录E 配置选项 附录F 可以免费获得的源代码 参考文献 缩略语 TCP/IP详解 (卷2:实现) 现货 作  者: (美)莱特(Wright,G.R.)(美)史蒂文斯(Stevens,W.R.)著;陆雪莹 等译 出 版 社:机械工业出版社 出版时间: 2008-6-1 字  数: 版  次: 1 页  数: 901 印刷时间: 开  本: 16开 印  次: 纸  张: I S B N : 9787111075677 定价:¥78.00 编辑推荐 “我在全国各地教授Cisc0联网课程.每本新的有名的数据通信的书我都听说了,因为我的学生们拿它们作为课程的参考书。Stevens的《TCP/IP详解卷1 协议》的到来如同一枚炸弹的爆炸……学生们被这本书所倾倒。我刚读完《TCP/IP详解卷2:实现》。如果说卷1像一枚炸弹,则卷2就是一枚重磅炸弹!” “在读完Stevens的《TCP/IP详解卷1协议》后,我认为很难再有另一本如此有用的书了,但卷2就是这样一本书。有些人可能会问,如果你不是一个专职的网络程序员,如何让这本书适合于你。因为在我最初使用UNIX的日子里,回答‘这到底是如何工作的?’的标准答案是‘看源代 码’。用这本书,你不仅能看源代码,还有一个最清晰的解释:它们是如何互相配合起来的。” 《TCP/IP详解》系列覆盖了TCP/IP的许多方面.提供了一个高效直观的方法来学习联网协议族。 《TCP/IP详解卷2:实现》详尽地说明了TCP/IP协议是如何实现的。目前还没有更多的 书——此卷是唯一一本书,本书全面讲解了来源于44BSD—Lite版本的事实上的标准实现.这个 实现是运行在世界上成千上万个系统上的TCP/IP实现的基础。 500个示例总共15000行代码都是真正正在使用的代码,《TCP/IP详解卷2:实现》使用一种举例说明的方法来帮助你精通TCP/IP的实现。你会掌握以下问题:插口API和协议族之间的关系,一个主机实现和一个路由器实现之间的区别等。另外本书覆盖了4.4BSD—Lite版本的最新特性,包括多播,长肥管道支持、窗口缩放、时间戳选项、防止序列号环绕及很多其他主题。 本书覆盖范围广,它基于一个当前正使用的标准,并且有详尽的示例,因此它是任何使用TCP/IP的人员一个不可缺少的资源。 本书是“TCP/IP详解系列”的延续。主要内容包括:TCP事务协议,即T/TCP,这是对TCP的扩展,使客户-服务器事务更快、更高效和更可靠;TCP/IP应用,主要是HTTP和NNTP;UNIX域协议,这些协议提供了进程之间通信的一种手段。当客户与服务器进程在同一台主机上时,UNIX域协议通常要比TCP/IP快一倍。本书同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。适用于希望理解TCP/IP如何工作的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 TCP/IP详解卷3:TCP实务协议、HTTP、NNTP和UNIX域协议 机械工业出版社 ISBN:9787111075684 定价:35元 内容简介: 第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠; HTTP (超文本传送协议),这是飞速扩展中的万维网的基础; NNTP (网络新闻传送协议),这是Usennet新闻系统的基础; UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。

2014-01-15

编译原理及实践pdf

1书籍简介 作 者:(美)劳顿 著,冯博琴等 译 编译原理及实践书籍封面图 编译原理及实践书籍封面图 出 版 社:机械工业出版社 出版时间:2004-2-1 版 次:1 页 数:427 印刷时间:2004-2-1 纸 张:胶版纸 I S B N:9787111077039 包 装:平装 定 价:¥39.00 2编辑推荐 把本书讨论的概念统一起来,就是一个完整的可运行的编译器,它使用每一章所讨论的技术进行开发,用C语言写成。每章最后有大量的练习,使学生的注意力集中在编程问题上。 3内容简介 本书系统介绍了经典的编译理论和技术,同时也包含了面向对象语言等当前较新语言的编译技术。本书更可贵之处在于提供了较完整的适用于教学实践的样例语言,是一本理论和实践内容相结合的、不可多得的好书。本书可用作大专院校教材、教师参考书以及编译器研究人员的参考资料。 作者简介 Kenneth C.Louden,加拿大麦吉尔大学获得博士学位之后,曾在多所大学任教。他的主要研究领域是统和统译器,涉及范畴论及其编程、形式语义、编译器优化与自动化技术等。1985年在美国圣何塞州立大学任教至今。所撰写的教材还有Programming Languages、Programming Languages Text和 Compiler Constuction Text等。 4书籍目录 译者序 前言 第1章 概论 1 1.1 为什么要用编译器 2 1.2 与编译器相关的程序 3 1.3 翻译步骤 5 1.4 编译器中的主要数据结构 8 1.5 编译器结构中的其他问题 10 1.6 自举与移植 12 1.7 TINY样本语言与编译器 14 1.8 C-Minus:编译器项目的一种语言 18 练习 19 注意与参考 20 第2章 词法分析 21 2.1 扫描处理 21 2.2 正则表达式 23 2.3 有穷自动机 32 2.4 从正则表达式到DFA 45 2.5 TINY扫描程序的实现 52 2.6 利用Lex 自动生成扫描程序 57 练习 65 编程练习 67 注意与参考 67 第3章 上下文无关文法及分析 69 3.1 分析过程 69 3.2 上下文无关文法 70 3.3 分析树与抽象语法树 77 3.4 二义性 83 3.5 扩展的表示法:EBNF和语法图 89 3.6 上下文无关语言的形式特性 93 3.7 TINY语言的语法 97 练习 101 注意与参考 104 第4章 自顶向下的分析 105 4.1 使用递归下降分析算法进行自顶向下的分析 105 4.2 LL(1)分析 113 4.3 First集合和Follow集合 125 4.4 TINY语言的递归下降分析程序 136 4.5 自顶向下分析程序中的错误校正 137 练习 143 编程练习 146 注意与参考 148 第5章 自底向上的分析 150 5.1 自底向上分析概览 151 5.2 LR(0)项的有穷自动机与LR(0)分析 153 5.3 SLR(1)分析 160 5.4 一般的LR(1)和LALR(1)分析 166 5.5 Yacc:一个LALR(1)分析程序的生成器 173 5.6 使用Yacc生成TINY分析程序 186 5.7 自底向上分析程序中的错误校正 188 练习 192 编程练习 195 注意与参考 197第6章 语义分析 198第7章 运行时环境 266第8章 代码生成 305附录A 编译器设计方案 373附录B 小型编译器列表 381附录C Tiny Machine模拟器列表 417

2013-12-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除