欢迎光临中图网 请 | 注册
> >>
GNU/Linux编程指南(第二版)

GNU/Linux编程指南(第二版)

出版社:清华大学出版社出版时间:2002-06-01
开本: 小16开 页数: 659
中 图 价:¥49.6(7.3折) 定价  ¥68.0 登录后可看到会员价
暂时缺货 收藏
运费6元,满69元免运费
?快递不能达地区使用邮政小包,运费14元起
云南、广西、海南、新疆、青海、西藏六省,部分地区快递不可达
本类五星书更多>

GNU/Linux编程指南(第二版) 版权信息

GNU/Linux编程指南(第二版) 本书特色

本书全面而深入地介绍了GNU/Linux编程。首先介绍了在Linux上编程**的编程工具,然后在库函数、系统调用以及内核上阐述Linux编程知识,并专门讲述了包括TCP/IP、UDP以及多播套接口在内的网络编程知识;图形界面也是本书的重点内容,本书着重讲述了文本形式的图形界面库ncurses;还分别讲解了真正图形化的流行系统X Window、Qt、GNOME以及OpenGL的基本编程方法;*后,介绍了Bash编程和设备驱动编程。
本书包含大量实用实例,读者可以通过实例代码深入理解编程思想和技巧。本书另一优点是讲述了其他编程书籍通常没有提及的RPM包管理工具、文档编写以及发布许可证选择等内容,这是任何准备投身于GNU开发工作的程序员所必须具备的知识。
本书对于所有Linux编程人员——无论是初学者还是高级用户——都是一本不可多得的参考资料.

GNU/Linux编程指南(第二版) 内容简介

本书全面而深入地介绍了GNU/Linux编程。首先介绍了在Linux上编程**的编程工具,然后在库函数、系统调用以及内核上阐述Linux编程知识,并专门讲述了包括TCP/IP、UDP以及多播套接口在内的网络编程知识;图形界面也是本书的重点内容,本书着重讲述了文本形式的图形界画库ncurses;还分别讲解了真正图形化的流行系统X Window、Qt、 GNOME以及OpenGL的基本编程方法;*后,介绍了Bash编程和设备驱动编程。本书包含大量实用实例,读者可以通过实例代码深入理解编程思想和技巧。本书另一优点是讲述了其他编程书籍通常没有提及的RPM包管理工具、文档编写以及发布许可证选择等内容,这是任何准备投身于GNU开发工作的程序员所必须具备的知识。本书对于所有Linux编程人员——无论是初学者还是高级用户——都是一本不可多得的参考资料。

GNU/Linux编程指南(第二版) 目录

第1部分 Linux编程工具包 第1章 Linux及Linux编程综述 1 1.1 Linux变得成熟了 1 1.1.1 Linux的昨天 1 1.1.2 Linux的今天 3 1.1.3 Linux的明天 3 1.2 为何选择Linux编程 3 1.3 每章内容介绍 5 1.3.1 Linux编程工具包 5 1.3.2 输入、输出、文件和目录 5 1.3.3 进程和同步 6 1.3.4 网络编程 6 1.3.5 用户界面编程 7 1.3.6 特殊编程技术 8 1.3.7 补充内容 8 1.4 小结 8 第2章 设置开发系统 9 2.1 一般性考虑 9 2.2 主板和CPU 10 2.2.1 板上I/O 12 2.2.2 处理器 12 2.2.3 BIOS 13 2.2.4 内存 13 2.2.5 机箱和电源 13 2.3 用户交互硬件:视频、声音、键盘 及鼠标 14 2.3.1 显卡 14 2.3.2 显示器 15 2.3.3 声卡 16 2.3.4 键盘及鼠标 16 2.4 通信设备、端口及总线 17 2.4.1 调制解调器 17 2.4.2 网络接口卡 18 2.4.3 SCSI 18 2.4.4 USB和火线(IEEE1394) 18 2.4.5 串行卡 18 2.4.6 IRDA 19 2.4.7 PCMCIA卡 19 2.4.8 ISA即插即用设备 19 2.5 存储设备 19 2.5.1 硬盘 20 2.5.2 可移动磁盘设备 20 2.5.3 CD-ROM/DVD 20 2.5.4 磁带备份设备 20 2.6 外围设备 21 2.6.1 打印机 21 2.6.2 扫描仪 21 2.6.3 数字相机 22 2.6.4 家居自动控制设备 22 2.7 完备型系统 22 2.8 便携系统 22 2.9 开发工具软件 23 2.9.1 关键库和头文件 23 2.9.2 调试器 23 2.9.3 编程工具 23 2.9.4 文本编辑器 24 2.10 小结 24 第3章 使用GNU CC 25 3.1 GNU CC特性 25 3.2 教学示例 26 3.3 常用命令行选项 29 3.3.1 函数库和包含文件 30 3.3.2 警告和出错消息选项 31 3.4 优化选项 36 3.5 调试选项 38 3.6 特定体系结构的选项 40 3.7 GNU C扩展 41 3.7.1 关于可移植性 41 3.7.2 GNU扩展 42 3.8 pgcc:奔腾处理器的编译器 45 3.9 小结 45 第4章 使用GNU make管理项目 46 4.1 为何使用make 46 4.2 编写makefile 46 4.3 编写makefile的规则 47 4.3.1 伪目标 49 4.3.2 变量 50 4.3.3 隐式规则 52 4.3.4 模式规则 53 4.3.5 注释 53 4.4 命令行选项和参数 53 4.5 调试make 54 4.6 常见的make出错信息 54 4.7 有用的makefile目标 54 4.8 小结 55 第5章 创建可移植的自配置软件 56 5.1 考虑可移植性 56 5.1.1 什么是程序的可移植性 56 5.1.2 移植性的线索和技巧 57 5.2 理解autoconf 58 5.2.1 创建configure.in 58 5.2.2 构造文件 58 5.2.3 有用的autoconf工具 59 5.3 内置宏 62 5.3.1 候选程序测试 62 5.3.2 库函数测试 63 5.3.3 头文件测试 64 5.3.4 结构测试 64 5.3.5 类型定义测试 64 5.3.6 编译器行为测试 65 5.3.7 系统服务测试 65 5.3.8 UNIX变体测试 66 5.4 普通宏 66 5.5 一个带注释的autoconf脚本 68 5.6 小结 74 第6章 比较和合并源代码文件 75 6.1 使用diff命令比较文件 75 6.2 理解diff3命令 83 6.3 准备源代码补丁 86 6.3.1 patch的命令行选项 86 6.3.2 创建补丁 87 6.3.3 应用补丁 88 6.4 小结 88 第7章 使用RCS和CVS控制版本 89 7.1 基本术语 89 7.2 使用修订控制系统(RCS) 90 7.2.1 RCS基本用法 90 7.2.2 找出RCS文件间的不同 95 7.2.3 其他RCS命令 98 7.3 使用并发版本系统(CVS) 100 7.3.1 同RCS相比的优点 100 7.3.2 设置CVS 100 7.3.3 检出源代码文件 102 7.3.4 将改动合并进源代码库 103 7.3.5 检查改动 103 7.3.6 添加和删除文件 104 7.3.7 解决文件冲突 105 7.3.8 CVS命令 106 7.3.9 CVS选项 106 7.4 小结 107 第8章 调试 108 8.1 为使用GDB进行编译 108 8.2 使用基本的GDB命令 109 8.2.1 启动GDB 109 8.2.2 在调试器中查看代码 111 8.2.3 检查数据 111 8.2.4 设置断点 113 8.2.5 检查并更改运行中的代码 114 8.3 高级GDB概念和命令 116 8.3.1 变量的作用域和上下文 116 8.3.2 遍历函数堆栈 117 8.3.3 操纵源代码文件 119 8.3.4 与Shell进行通信 119 8.3.5 附加到某个运行中的程序 119 8.4 小结 121 第9章 出错处理 122 9.1 出错处理简述 122 9.2 出错处理选项 122 9.3 C语言机制 123 9.3.1 assert宏 123 9.3.2 使用预编译 125 9.3.3 标准库函数 127 9.4 使用系统日志 133 9.4.1 系统日志选项 134 9.4.2 系统日志函数 135 9.4.3 用户程序 138 9.5 小结 139 第10章 使用库 140 10.1 使用编程库 140 10.1.1 库兼容性 140 10.1.2 命名和编号约定 141 10.1.3 经常使用的库 142 10.2 库操作工具 143 10.2.1 理解nm命令 143 10.2.2 理解ar命令 144 10.2.3 理解ldd命令 144 10.2.4 理解ldconfig 145 10.2.5 环境变量和配置文件 145 10.3 编写并使用静态库 146 10.4 编写并使用共享库 151 10.5 使用动态加载的共享对象 152 10.5.1 理解dl接口 152 10.5.2 使用dl接口 154 10.6 小结 155 第2部分 输入、输出、文件和目录 第11章 输入和输出 156 11.1 基本特点和概念 156 11.2 理解文件描述符 160 11.2.1 文件描述符的概念 160 11.2.2 文件描述符的优缺点 161 11.3 使用文件描述符 162 11.3.1 打开关闭文件描述符 162 11.3.2 读写文件描述符 164 11.3.3 使用ftruncate缩短文件 166 11.3.4 使用lseek定位文件指针 166 11.3.5 使用fsync同步到硬盘 167 11.3.6 使用fstat获得文件信息 167 11.3.7 使用fchown改变文件所有权 172 11.3.8 使用fchmod改变文件读写权 172 11.3.9 使用flock和fcntl给文件上锁 172 11.3.10 使用dup和dup2调用 177 11.3.11 使用select同时读写多个文件 179 11.3.12 使用ioctl 182 11.4 小结 182 第12章 文件和目录操作 183 12.1 标准文件函数 183 12.1.1 打开和关闭文件 183 12.1.2 读写文件 184 12.1.3 获得文件状态 185 12.2 输入输出调用 186 12.2.1 格式化输出 186 12.2.2 格式化输入 187 12.2.3 字符输入输出 187 12.2.4 行输入输出 188 12.2.5 文件定位 189 12.2.6 缓冲区控制 189 12.2.7 删除和改名 189 12.2.8 使用临时文件 190 12.3 目录操作 191 12.3.1 找到当前目录 191 12.3.2 改变目录 191 12.3.3 创建和删除目录 191 12.3.4 获得目录列表 192 12.4 特殊的ext2文件系统属性 192 12.5 小结 195 第3部分 进程和同步 第13章 进程控制 196 13.1 Linux进程模型 196 13.2 进程属性 196 13.2.1 进程标识号 197 13.2.2 Real和Effective标识号 198 13.2.3 SetUID和SetGID程序 198 13.2.4 用户和用户组信息 200 13.2.5 附加的进程信息 201 13.3 创建进程 208 13.3.1 使用system函数 208 13.3.2 fork系统调用 209 13.3.3 exec函数族 211 13.3.4 使用popen函数 213 13.4 控制进程 214 13.4.1 等待进程——wait函数族 214 13.4.2 杀死程序 216 13.5 信号 218 13.5.1 什么是信号 218 13.5.2 发送信号 219 13.5.3 捕获信号 221 13.5.4 检测信号 226 13.6 进程调度 227 13.7 小结 228 第14章 线程概述 229 14.1 什么是线程 229 14.2 __clone函数调用 229 14.3 pthread接口 230 14.3.1 pthread是什么 230 14.3.2 何时使用Pthread 231 14.3.3 pthread_create函数 231 14.3.4 pthread_exit函数 231 14.3.5 pthread_ join函数 232 14.3.6 pthread_atfork函数 234 14.3.7 取消线程 234 14.3.8 pthread cleanup宏 237 14.3.9 Pthread条件 238 14.3.10 pthread_equal函数 238 14.3.11 线程属性 239 14.3.12 互斥 240 14.4 小结 244 第15章 访问系统信息 245 15.1 进程信息 246 15.1.1 cmdline文件 246 15.1.2 environ文件 246 15.1.3 fd目录 247 15.1.4 mem文件 247 15.1.5 stat 247 15.1.6 status文件 249 15.1.7 cwd符号链接 249 15.1.8 exe符号链接 249 15.1.9 maps文件 249 15.1.10 root符号链接 249 15.1.11 statm文件 249 15.2 一般系统信息 249 15.2.1 /proc/cmdline文件 249 15.2.2 /proc/cpuinfo文件 250 15.2.3 /proc/devices文件 250 15.2.4 /proc/dma文件 250 15.2.5 /proc/file systems文件 250 15.2.6 /proc/interrupts文件 250 15.2.7 /proc/ioports文件 250 15.2.8 /proc/kcore文件 250 15.2.9 /proc/kmsg文件 250 15.2.10 /proc/ksyms文件 251 15.2.11 /proc/loadavg文件 251 15.2.12 /proc/locks文件 251 15.2.13 /proc/mdstat文件 251 15.2.14 /proc/meminfo文件 251 15.2.15 /proc/misc文件 251 15.2.16 /proc/modues文件 251 15.2.17 /proc/mounts文件 251 15.2.18 /proc/pci文件 251 15.2.19 /proc/rtc文件 252 15.2.20 /proc/stat文件 252 15.2.21 /proc/uptime文件 252 15.2.22 /proc/version文件 252 15.2.23 /proc/net子目录 252 15.2.24 /proc/scsi子目录 253 15.2.25 /proc/sys子目录 253 15.3 未来内核中/proc的变化 255 15.4 小结 255 第16章 内存管理 256 16.1 C内存管理回顾 256 16.1.1 malloc函数的使用 256 16.1.2 calloc函数的使用 257 16.1.3 realloc函数的使用 257 16.1.4 free函数的使用 257 16.1.5 alloca函数的使用 258 16.2 内存映像文件 258 16.2.1 mmap函数的使用 259 16.2.2 munmap函数的使用 260 16.2.3 msync函数的使用 260 16.2.4 mprotect函数的使用 260 16.2.5 锁定内存 261 16.2.6 mremap函数的使用 261 16.2.7 用内存映像实现cat命令 261 16.3 发现并修改内存问题 263 16.3.1 一个有问题的程序 263 16.3.2 Electric Fence 265 16.4 小结 267 第17章 进程间通信 268 17.1 管道 268 17.1.1 打开和关闭管道 269 17.1.2 读写管道 271 17.1.3 更简单的方法 274 17.2 FIFO 276 17.2.1 理解FIFO 276 17.2.2 创建FIFO 278 17.2.3 打开和关闭FIFO 279 17.2.4 读写FIFO 279 17.3 System V IPC概述 282 17.3.1 System V IPC的主要概念 282 17.3.2 System V IPC的问题 284 17.3.3 Linux和System V IPC 285 17.4 共享内存 285 17.4.1 创建共享内存区 286 17.4.2 附加共享内存区 288 17.5 消息队列 291 17.5.1 创建和打开消息队列 291 17.5.2 向队列中写入消息 293 17.5.3 读取队列中的消息 295 17.5.4 删除消息队列 297 17.6 信号灯 299 17.6.1 创建信号灯 299 17.6.2 控制和删除信号灯 301 17.7 小结 303 第18章 守护进程 304 18.1 理解守护进程 304 18.2 创建守护进程 304 18.2.1 函数调用 305 18.2.2 出错处理 308 18.3 和守护进程通信 311 18.3.1 读取配置文件 311 18.3.2 向守护进程加入信号处理功能 314 18.4 小结 319 第4部分 网络编程 第19章 TCP/IP和套接口编程 320 19.1 套接口的定义 320 19.2 通信域 321 19.3 套接口编程基础 321 19.3.1 分配套接口和初始化 321 19.3.2 完成连接的系统调用 323 19.3.3 传送数据 324 19.3.4 关闭 325 19.4 使用套接口的客户机/服务器例子 程序 325 19.4.1 服务器的例子程序 326 19.4.2 客户机的例子程序 328 19.4.3 运行客户机和服务器的例子 程序 331 19.4.4 使用Web浏览器作为客户机 运行服务器的例子程序 331 19.5 一个简单的Web服务器和Web客 户机的例子程序 331 19.5.1 实现一个简单的Web服务器 332 19.5.2 实现一个简单的Web客户机 336 19.5.3 测试Web服务器和Web客户机 338 19.5.4 使用Netscape Navigator作为客户 机运行简单的Web服务器 339 19.6 通过其他编程语言使用套接口 339 19.7 UNIX域套接口的Perl编程 339 19.8 监视套接口活动的工具 341 19.9 小结 342 第20章 UDP:用户数据报协议 343 20.1 UDP概述 343 20.1.1 UDP和TCP的对比 343 20.1.2 TCP的优缺点 343 20.1.3 UDP的优缺点 344 20.1.4 选择使用哪一种协议 344 20.2 实现一个基于UDP的应用 345 20.2.1 使用UDP发送数据 345 20.2.2 接收UDP数据 348 20.2.3 *少的出错检查 350 20.2.4 非阻塞I/O 355 20.3 小结 361 第21章 多播套接口和非阻塞I/O 362 21.1 配置Linux支持多播IP 362 21.2 为支持多播IP重新编译Linux内核 363 21.3 多播IP广播的示例程序 363 21.3.1 使用多播IP广播数据 364 21.3.2 创建客户程序监听多播IP广播 366 21.3.3 运行多播IP示例程序 370 21.4 小结 371 第5部分 用户界面编程 第22章 底层终端控制 372 22.1 终端接口 372 22.2 控制终端 373 22.2.1 属性控制函数 374 22.2.2 速度控制函数 375 22.2.3 行控制函数 376 22.2.4 进程控制函数 377 22.3 使用终端接口 378 22.4 改变终端模式 380 22.5 使用terminfo 382 22.5.1 terminfo能力 382 22.5.2 terminfo编程 383 22.5.3 发挥terminfo能力 387 22.6 小结 390 第23章 ncurses入门 391 23.1 ncurses简史 391 23.2 使用ncurses编译程序 392 23.3 调试ncurses程序 392 23.4 关于窗口 392 23.4.1 ncurses窗口设计 393 23.4.2 ncurses函数命名规则 394 23.5 初始化和终止 395 23.5.1 ncurses初始化结构 395 23.5.2 ncurses终止 395 23.5.3 说明ncurses初始化和终止 396 23.6 输入和输出 398 23.6.1 输出例程 398 23.6.2 输入例程 406 23.7 色彩例程 409 23.8 窗口管理 411 23.9 其他各种工具函数 412 23.10 小结 415 第24章 ncurses高级编程 416 24.1 其他ncurses功能 416 24.1.1 鼠标支持 416 24.1.2 菜单支持 416 24.1.3 窗体支持 416 24.2 和鼠标交互 417 24.2.1 鼠标API概述 417 24.2.2 鼠标控制例程 418 24.2.3 示例程序 419 24.3 使用菜单 422 24.3.1 菜单API概述 422 24.3.2 菜单控制例程 423 24.3.3 示例程序 428 24.4 ncurses窗体 430 24.4.1 窗体API概述 430 24.4.2 窗体管理例程 431 24.4.3 示例程序 440 24.5 小结 441 第25章 X Windows编程 442 25.1 X的概念 443 25.2 Xlib API 444 25.2.1 XOpenDisplay 445 25.2.2 XCreateSimpleWindow和 XCreateWindow 445 25.2.3 映射窗口和撤销映射窗口 446 25.2.4 撤销窗口 447 25.2.5 事件处理 447 25.2.6 初始化图形设备上下文和字体 448 25.2.7 在X窗口中绘图 449 25.2.8 一个Xlib的示例程序 449 25.3 X Toolkit API 455 25.3.1 X Toolkit使用入门 455 25.3.2 使用X工具包设置窗口部件参数 456 25.4 XFree86 458 25.4.1 DPMS——显示器电源管理信令 458 25.4.2 DRI——直接显示接口 458 25.4.3 DGA——直接图形体系结构 458 25.4.4 XV——X视频 459 25.5 小结 459 第26章 Athena、Motif和LessTif窗口 部件 460 26.1 使用Athena的窗口部件 460 26.1.1 Athena的标签窗口部件 460 26.1.2 Athena的命令按钮窗口部件 461 26.1.3 Athena的列表窗口部件 464 26.1.4 Athena的文本窗口部件 465 26.1.5 Athena的简单菜单窗口部件 468 26.2 使用Motif的窗口部件 470 26.2.1 Motif的标签窗口部件 471 26.2.2 Motif的列表窗口部件 472 26.2.3 Motif的文本窗口部件 474 26.3 编写一个定制的Athena窗口部件 477 26.3.1 使用fetch_url.c文件 477 26.3.2 使用URL.h文件 479 26.3.3 使用URLP.h文件 480 26.3.4 使用URL.c文件 481 26.3.5 测试URLWidget 484 26.4 在C++程序中使用Athena和Motif 485 26.5 使用封装Athena窗口部件的一个 C++类库 486 26.5.1 Component类 487 26.5.2 PaneWindow类 488 26.5.3 Label类 490 26.5.4 Button类 491 26.5.5 Text类 492 26.6 小结 494 第27章 使用GTK+进行GUI编程 495 27.1 GTK+简介 496 27.1.1 在GTK+中处理事件 497 27.1.2 使用GTK+的简短示例程序 498 27.1.3 各种GTK窗口部件 500 27.1.4 GTK容器窗口部件 501 27.2 一个用于显示XML文件的GTK+ 程序 502 27.2.1 XML简介 502 27.2.2 James Clark的XML分析器 expat 503 27.2.3 实现GTK+的XML显示程序 504 27.2.4 运行GTK+的XML显示程序 510 27.3 一个使用Notebook窗口部件的GUI 程序 510 27.3.1 Notebook窗口部件示例程序的 实现 510 27.3.2 实现Drawing窗口部件 512 27.3.3 运行GTK Notebook窗口部件 的示例程序 515 27.4 通过其他编程语言使用GTK+ 515 27.4.1 通过C++使用GTK+ 516 27.4.2 通过Perl使用GTK+ 517 27.4.3 通过Python使用GTK+ 518 27.5 GTK+的RAD工具 518 27.6 小结 519 第28章 使用Qt进行GUI编程 520 28.1 通过重载Qwidget类方法处理事件 521 28.1.1 Qwidget类概述 521 28.1.2 实现DrawWidget类 523 28.1.3 测试DrawWidget 525 28.2 使用Qt槽和信号处理事件 526 28.2.1 派生StateLCDWidget类 526 28.2.2 使用信号和槽 529 28.2.3 运行信号/槽示例程序 531 28.3 用Qt实现XMLview的程序 531 28.3.1 SAX2:一个用于XML的简单 API 532 28.3.2 DOM:文档目标对象 533 28.4 小结 537 第29章 使用OpenGL和Mesa进行 3D图形编程 538 29.1 需要为本章准备什么 538 29.2 使用OpenGL 539 29.3 3D图形编程 539 29.3.1 orbits.c 539 29.3.2 为OpenGL图形创建窗口并 初始化OpenGL 540 29.3.3 使用GLUT创建简单的3D对象 541 29.3.4 使用x-y-z坐标在3D空间中 放置对象 542 29.3.5 沿着x-、y-、z-中任一坐标轴或 所有坐标轴旋转对象 543 29.3.6 启用Material属性 544 29.3.7 启用深度测试 545 29.3.8 处理键盘事件 545 29.3.9 为获得动画效果更新OpenGL 图形 545 29.3.10 Orbits程序清单 546 29.4 纹理映像 548 29.4.1 用纹理面产生立方体 548 29.4.2 创建纹理映像 549 29.4.3 立方体程序清单 550 29.5 小结 554 第6部分 特殊编程技术 第30章 使用GNU Bash进行Shell 编程 555 30.1 为何使用bash 555 30.2 bash基础知识 555 30.2.1 通配符 556 30.2.2 花括号展开式 556 30.2.3 特殊字符 557 30.3 使用bash变量 558 30.4 使用bash操作符 561 30.4.1 字符串操作符 561 30.4.2 模式匹配操作符 562 30.5 流控制 564 30.5.1 条件执行:if 564 30.5.2 确定性循环:for 568 30.5.3 不确定性循环:while和until 569 30.5.4 选择结构:case和select 569 30.6 shell函数 572 30.7 输入与输出 573 30.7.1 I/O重定向 573 30.7.2 字符串I/O 574 30.8 命令行处理 576 30.9 进程和作业控制 578 30.9.1 Shell的信号处理 578 30.9.2 使用trap 578 30.10 小结 580 第31章 设备驱动程序 581 31.1 驱动程序的类型 581 31.1.1 静态链接的内核设备驱动程序 581 31.1.2 可加载的内核模块 582 31.1.3 共享库 582 31.1.4 无特权用户模式程序 582 31.1.5 特权用户模式程序 583 31.1.6 守护进程 583 31.1.7 字符设备与块设备的对比 583 31.2 怎样构造硬件 583 31.2.1 理解步进电机的工作原理 584 31.2.2 标准的或双向的并口 586 31.3 建立开发环境 588 31.4 调试内核级驱动程序 589 31.5 设备驱动程序内幕 589 31.5.1 低层端口的I/O 589 31.5.2 使用DMA访问内存 591 31.5.3 引发使用设备驱动程序的中断 591 31.5.4 设备驱动程序分层 592 31.6 简单的用户模式测试驱动程序 593 31.7 创建内核驱动程序 594 31.7.1 查看源代码 594 31.7.2 编译驱动程序 619 31.7.3 使用内核驱动程序 620 31.7.4 未来发展方向 621 31.8 其他信息资源 621 31.9 小结 622 第7部分 补充内容 第32章 软件包管理 623 32.1 理解tar文件 623 32.1.1 创建tar文件 624 32.1.2 更新tar文件 625 32.1.3 列出tar文件的内容 626 32.1.4 从一个存档文件解出文件 627 32.2 理解install命令 628 32.3 理解Red Hat包管理器(RPM) 630 32.3.1 RPM是什么 630 32.3.2 *小要求 631 32.3.3 配置RPM 631 32.3.4 控制构造过程:使用spec文件 633 32.3.5 分析一个spec文件 634 32.3.6 构造软件包 637 32.4 文件层次结构标准 637 32.5 小结 639 第33章 建档 640 33.1 编写手册页面 640 33.1.1 手册页面的组成 640 33.1.2 手册页面的例子 641 33.1.3 使用groff命令 643 33.1.4 Linux约定 644 33.2 使用DocBook 645 33.2.1 DocBook是什么 646 33.2.2 DocBook标记 646 33.2.3 DocBook文档示例 647 33.2.4 生成输出 653 33.3 小结 653 第34章 许可证的发放 654 34.1 介绍和弃权 654 34.2 MIT/X风格的许可证 654 34.3 BSD风格的许可证 655 34.4 Artistic的许可证 656 34.5 GNU通用公共许可证 656 34.5.1 GNU通用公共许可证(GPL) 657 34.5.2 GNU库通用公共许可证(LGPL) 658 34.6 开发源代码的定义 658 34.7 小结 660

展开全部
商品评论(0条)
暂无评论……
书友推荐
返回顶部
中图网
在线客服