Linux高级程序设计

Linux高级程序设计
作 者: Richard Blum Jon Masters 陈健
出版社: 人民邮电出版社
丛编项: 图灵程序设计丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: LINUX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Jon Masters,著名Linux内核工程师。目前效力于Red Hat公司。13岁取得计算机科学学士学位,创造了英国记录。他精通Linux内核引擎、Unix系统管理、基于Linux的嵌入式系统开发,而且在网络、安全等领域也颇有造诣。目前正在负责维护Module—init—tools—Linux官方的一个工具包,包含所有与Linux内核交互的工具。他还是Linux User&Developer、Linux Magazine等著名杂志的专栏作家。Richard Blum,毕业于美国普度大学电气工程专业,资深程序员。精通多种编程语言。除本书外,他还著有Professional Assembly Language等经典著作,深受读者好评。

内容简介

本书是Linux 程序设计领域的一部力作,讲解了大量程序员需要掌握的关键知识点,包括Linux 开发中的基本工具、Linux 系统编程、Linux 桌面开发以及Linux 与Web 开发。书中包括大量有益的经验之谈和富于启发的示例。本书主要针对已有一定Linux 开发经验或者从其他平台转到Linux 平台的专业程序员,同样也适合想更多了解系统以解决实际问题的Linux 使用者。

图书目录

第1章 Linux简介 1

1.1 Linux发展简史 1

1.1.1 GNU项目 2

1.1.2 Linux内核 2

1.1.3 Linux发行版 3

1.1.4 自由软件与开放源码 4

1.2 开发起步 5

1.2.1 选择一个Linux发行版 5

1.2.2 安装Linux发行版 7

1.2.3 沙盒和虚拟化技术 13

1.3 Linux社区 13

1.3.1 Linux用户组 14

1.3.2 邮件列表 14

1.3.3 IRC 14

1.3.4 私有社区 14

1.4 关键差别 15

1.4.1 Linux是模块化的 15

1.4.2 Linux是可移植的 15

1.4.3 Linux是通用的 15

1.5 本章总结 16

第2章 工具链 17

2.1 Linux开发过程 17

2.1.1 使用源代码 18

2.1.2 配置本地环境 18

2.1.3 编译源代码 19

2.2 GNU工具链的组成 20

2.3 GNU二进制工具集 29

2.3.1 GNU汇编器 29

2.3.2 GNU连接器 30

2.3.3 GNU objcopy和objdump 31

2.4 GNU Make 33

2.5 GNU调试器 34

2.6 Linux内核和GNU工具链 37

2.6.1 内联汇编 37

2.6.2 属性标记 38

2.6.3 定制连接器脚本 38

2.7 交叉编译 39

2.8 建立GNU工具链 40

2.9 本章总结 41

第3章 可移植性 42

3.1 可移植性的需要 42

3.2 Linux的可移植性 44

3.2.1 抽象层 44

3.2.2 Linux发行版 45

3.2.3 建立软件包 49

3.2.4 可移植的源代码 61

3.3 硬件可移植性 78

3.3.1 64位兼容 78

3.3.2 字节序中立 79

3.3.3 字节序的门派之争 81

3.4 本章总结 81

第4章 软件配置管理 83

4.1 SCM的必要性 83

4.2 集中式开发与分散式开发 84

4.3 集中式工具 85

4.3.1 CVS 85

4.3.2 Subversion 93

4.4 分散式工具 96

4.4.1 Bazaar-NG 96

4.4.2 Linux内核SCM 99

4.5 集成化SCM工具 102

4.6 本章总结 104

第5章 网络编程 105

5.1 Linux套接字编程 105

5.1.1 套接字 105

5.1.2 网络地址 107

5.1.3 使用面向连接的套接字 108

5.1.4 使用无连接套接字 114

5.2 传输数据 117

5.2.1 数据报与字节流 117

5.2.2 标记消息边界 121

5.3 使用网络编程函数库 123

5.3.1 libCurl函数库 123

5.3.2 使用libCurl库 124

5.4 本章总结 129

第6章 数据库 130

6.1 持久性数据存储 130

6.1.1 使用标准文件 130

6.1.2 使用数据库 131

6.2 Berkeley DB软件包 133

6.2.1 下载和安装 133

6.2.2 编译程序 134

6.2.3 基本数据处理 134

6.3 PostgreSQL数据库服务器 143

6.3.1 下载和安装 144

6.3.2 编译程序 145

6.3.3 创建一个应用程序数据库 145

6.3.4 连接服务器 147

6.3.5 执行SQL命令 150

6.3.6 使用参数 157

6.4 本章总结 160

第7章 内核开发 161

7.1 基本知识 161

7.1.1 背景先决条件 161

7.1.2 内核源代码 162

7.1.3 配置内核 165

7.1.4 编译内核 168

7.1.5 已编译好的内核 171

7.1.6 测试内核 172

7.1.7 包装和安装内核 174

7.2 内核概念 174

7.2.1 一句警告 175

7.2.2 任务抽象 175

7.2.3 虚拟内存 179

7.2.4 不要恐慌 182

7.3 内核编程 182

7.4 内核开发过程 185

7.4.1 git: 傻瓜内容跟踪器 185

7.4.2 Linux内核邮件列表 187

7.4.3 “mm”开发树 189

7.4.4 稳定内核小组 189

7.4.5 LWN:Linux每周新闻 189

7.5 本章总结 190

第8章 内核接口 191

8.1 什么是接口 191

8.2 外部内核接口 192

8.2.1 系统调用 193

8.2.2 设备文件抽象 197

8.2.3 内核事件 210

8.2.4 忽略内核保护 211

8.3 内部内核接口 215

8.3.1 内核API 215

8.3.2 内核ABI 216

8.4 本章总结 217

第9章 Linux内核模块 218

9.1 模块工作原理 218

9.1.1 扩展内核命名空间 220

9.1.2 没有对模块兼容性的保证 221

9.2 找到好的文档 221

9.3 编写Linux内核模块 223

9.3.1 开始之前 223

9.3.2 基本模块需求 223

9.3.3 日志记录 226

9.3.4 输出的符号 227

9.3.5 分配内存 228

9.3.6 锁的考虑 236

9.3.7 推迟工作 243

9.3.8 进一步阅读 251

9.4 分发Linux内核模块 252

9.4.1 进入上游Linux内核 252

9.4.2 发行源代码 252

9.4.3 发行预编译模块 253

9.5 本章总结 253

第10章 调试 254

10.1 调试概述 254

10.2 基本调试工具 255

10.2.1 GNU调试器 255

10.2.2 Valgrind 263

10.3 图形化调试工具 264

10.3.1 DDD 264

10.3.2 Eclipse 267

10.4 内核调试 269

10.4.1 不要惊慌! 269

10.4.2 理解oops 270

10.4.3 使用UML进行调试 272

10.4.4 一件轶事 275

10.4.5 关于内核调试器的注记 276

10.5 本章总结 276

第11章 GNOME开发者平台 277

11.1 GNOME函数库 277

11.1.1 Glib 277

11.1.2 GObject 277

11.1.3 Cairo 278

11.1.4 GDK 278

11.1.5 Pango 278

11.1.6 GTK+ 278

11.1.7 libglade 279

11.1.8 GConf 279

11.1.9 GStreamer 279

11.2 建立一个音乐播放器 280

11.2.1 需求 280

11.2.2 开始:主窗口 280

11.2.3 建立GUI 282

11.3 本章总结 299

第12章 自由桌面项目 300

12.1 D-BUS:桌面总线 300

12.1.1 什么是D-Bus 300

12.1.2 D-Bus基础 301

12.1.3 D-Bus方法 304

12.2 硬件抽象层 308

12.2.1 使硬件可以即插即用 308

12.2.2 HAL设备对象 311

12.3 网络管理器 316

12.4 其他自由桌面项目 317

12.5 本章总结 318

第13章 图形和音频 319

13.1 Linux和图形 319

13.1.1 X视窗 319

13.1.2 开放式图形库 321

13.1.3 OpenGL应用工具包 321

13.1.4 简单直接媒介层 322

13.2 编写OpenGL应用程序 322

13.2.1 下载和安装 323

13.2.2 编程环境 323

13.2.3 使用GLUT库 324

13.3 编写SDL应用程序 336

13.3.1 下载和安装 336

13.3.2 编程环境 337

13.3.3 使用SDL库 337

13.4 本章总结 347

第14章 LAMP 348

14.1 什么是LAMP 348

14.1.1 Apache 349

14.1.2 MySQL 349

14.1.3 PHP 349

14.1.4 反叛平台 350

14.1.5 评价LAMP平台 350

14.2 Apache 351

14.2.1 虚拟主机 352

14.2.2 安装和配置PHP 5 353

14.2.3 Apache Basic认证 353

14.2.4 Apache与SSL 354

14.2.5 SSL与HTTP认证的整合 355

14.3 MySQL 355

14.3.1 安装MySQL 355

14.3.2 配置和启动数据库 356

14.3.3 修改默认密码 356

14.3.4 MySQL客户端接口 356

14.3.5 关系数据库 357

14.3.6 SQL 357

14.3.7 关系模型 359

14.4 PHP 362

14.4.1 PHP语言 362

14.4.2 错误处理 369

14.4.3 异常错误处理 370

14.4.4 优化技巧 371

14.4.5 安装额外的PHP软件 375

14.4.6 日志记录 376

14.4.7 参数处理 377

14.4.8 会话处理 378

14.4.9 单元测试 378

14.4.10 数据库和PHP 380

14.4.11 PHP框架 380

14.5 DVD库 381

14.5.1 版本1:开发者的噩梦 381

14.5.2 版本2:使用DB数据层的基本应用程序 382

14.5.3 版本3:重写数据层,添加日志记录和异常 385

14.5.4 版本4:应用模板框架 388

14.6 本章总结 390