第一部分 基础篇 3
第1章 揭开Linux的面纱 3
1.1 什么是Linux 3
1.2 谁创造了Linux 3
1.3 Linux与自由软件 4
1.4 Linux的发行版本 5
1.5 Linux的商业应用 5
1.6 Linux正在走向成熟 6
1.7 中文Linux发行版本 7
1.8 Linux的设计特性综述 9
第2章 Linux下的C语言编程 18
2.1 C语言与UNIX 18
2.2 C语言特性 19
2.3 Linux下的C语言函数库 20
2.3.1 GNU C语言函数库glibc 21
2.3.2 其他的函数库 22
2.3.3 库和前导文件的位置 23
2.3.4 库的操作及配置 23
2.4 Linux下的系统调用 26
2.5 Linux下的开发工具简介 27
2.6 获得帮助 28
第二部分 Linux软件开发环境及工具篇 35
第3章 使用gcc编译C语言程序 35
3.1 gcc简介 35
3.2 gcc的安装与设置 36
3.3 调用gcc 37
3.4 使用优化参数 43
3.5 使用调试选项 44
3.6 gcc的自定义符号 45
3.7 链接 45
第4章 使用gdb调试程序 48
4.1 gdb的基本使用方法 48
4.2 gdb的基本命令 57
4.2.1 gdb的命令特性 58
4.2.2 调用gdb 59
4.2.3 gdb运行模式的选择 61
4.2.4 为程序设置断点和观察点 62
4.2.5 在gdb中获得帮助及其他信息 63
4.3.1 变量的作用域 67
4.3 gdb的高级应用 67
4.3.2 函数堆栈操作 68
4.3.3 在gdb中访问多个源文件 70
4.3.4 在gdb中执行Shell命令 71
4.4 其他的工具 71
4.4.1 使用xxgdb调试程序 71
4.4.2 使用cproto为函数产生原型 73
4.4.3 使用gprof分析程序运行特性 75
第5章 使用GNU make管理多文件项目 76
5.1 管理多文件项目 76
5.1.1 为何使用多文件 76
5.1.2 什么情况下分解项目 77
5.1.3 怎样分解项目 77
5.2 基本的makefile结构 78
5.4 Makefile变量 80
5.3 makefile的规则 80
5.5 伪目标 83
5.6 makefile的隐含规则 84
5.7 makefile中的函数 85
5.8 在makfile中自定义模式规则 86
5.9 常用的make命令行选项 86
5.10 调试make 87
第6章 版本控制工具CVS 88
6.1 版本控制简介 88
6.2 版本控制工具CVS的使用 89
6.2.1 建立CVS服务器 89
6.2.2 建立CVS项目 91
6.2.3 定义模块 92
6.2.4 版本的分支与合并 93
第7章 lex和yace 103
7.1 简介 103
7.2 lex 104
7.3 yacc 106
第8章 使用autoconf开发自配置软件 110
8.1 为什么需要autoconf 110
8.2 创建configure脚本 111
8.2.1 编写configure.in文件 112
8.2.2 使用autoscan脚本创建configure.in文件 114
8.2.3 使用ifnames列举条件 115
8.2.4 用Autoconf创建配置脚本configure 116
8.3 configure脚本的初始化和输出文件 117
8.3.1 寻找configure的输入文件 117
8.3.3 Makefile中的预定义输出变量 119
8.3.2 Makefile中的替换 119
8.3.4 确定软件包的安装目录 121
8.4 autoconf支持的测试宏 121
8.4.1 程序选择测试 122
8.4.2 检查普通文件和程序 123
8.4.3 检查库文件 125
8.4.4 检查库函数 126
8.4.5 检查前导文件 128
8.4.6 结构测试 132
8.4.7 类型定义检查 133
8.4.8 C编译程序特征测试 134
8.4.9 系统服务测试 135
8.4.10 UNIX变种测试 136
8.5.1 检验声明 137
8.5 编写新的测试 137
8.5.2 检验语法 138
8.5.3 检验库 139
8.5.4 检验运行时的特征 140
8.5.5 测试程序应注意的几个问题 140
8.5.6 语言选择 141
8.6 储存测试的结果 142
8.7 编写自己的宏 145
8.7.1 宏定义 146
8.7.2 宏的名称 146
8.7.3 宏的引用 147
8.7.4 宏之间的依赖性 148
8.7.5 建议的顺序 148
8.8.1 指定系统的类型 149
8.7.6 处理过时的宏 149
8.8 进行手工配置 149
8.8.2 获取规范的系统类型 150
8.8.3 系统类型变量 151
8.8.4 使用系统类型 151
8.9 利用autoconf进行站点配置 152
8.10 运行configure脚本 154
第9章 使用automake维护Makefile 157
9.1 理解automake 157
9.1.1 automake的工作过程 157
9.1.2 automake支持的包的种类 158
9.1.3 automake的严格性 158
9.1.4 automake的统一命名机制 158
9.1.5 派生变量的命名规则 159
9.2 示例软件包 160
9.2.1 myprog软件包 160
9.2.2 GNV Hello软件包 161
9.3 创建Makefile.in文件 162
9.4 检查configure.in文件 164
9.4.1 配置需求 164
9.4.2 automake能够识别的其他宏 164
9.4.3 自动生成aclocal.m4 166
9.4.4 automake支持的autoconf宏 167
9.4.5 编写自己的aclocal宏 169
9.5 编写顶层Makefile.am 169
9.6 创建程序和库 170
9.6.1 创建一个程序 170
9.6.2 创建一个库 171
9.6.3 创建一个共享库 172
9.6.4 创建一个程序时使用的变量 172
9.6.5 对其他语言的支持 173
9.6.6 自动依赖性跟踪 173
9.7 automake可以创建的其他对象 174
9.7.1 可执行脚本 174
9.7.2 头文件 175
9.7.3 与体系结构无关的数据文件 175
9.7.4 创建源代码 175
9.8 创建程序包文档 175
9.9 软件包的自动安装和删除 177
9.10 软件包需要发布的文件 177
9.11 定制automake的行为 178
第10章 wpe的使用 181
10.1 wpe简介 182
10.2 wpe的安装与运行 185
10.3 wpe的窗口操作和文件管理 188
10.4 源程序的编辑 192
10.5 程序的编译和运行 197
10.6 程序的调试 201
10.7 项目管理 204
10.8 定制wpe环境 211
10.8.1 wpe颜色设置 211
10.8.2 wpe编辑特性设置 212
10.8.3 文件管理器设置 213
10.8.4 帮助设定 214
10.8.5 编程环境的设置 215
10.8.6 编译器设定 216
10.9.1 wpe使用帮助 218
10.9 获得帮助 218
10.9.2 系统命令与函数信息 219
10.9.3 info文档信息 221
第三部分 GUI应用程序开发篇 225
第11章 使用KDevelop开发GUI程序 225
11.1 X-Window编程概念 228
11.2 Kdevelop的安装和设置 230
11.2.1 KDevelop软件包的获得 231
11.2.2 系统需求 231
11.2.3 编译和安装 232
11.2.4 配置KDevelop环境 232
11.3.1 一个基于Qt的程序 235
11.3 Qt和KDE库介绍 235
11.3.2 察看Qt帮助 236
11.3.3 用户交互 237
11.3.4 Qt的signal/slot机制 238
11.3.5 KDE库简介 239
11.4 KDevelop简介 240
11.4.1 KDevelop的工具简介 241
11.4.2 一般的开发过程 243
11.4.3 其他工作 244
11.5 使用类浏览器和文件查看器 245
11.5.1 类浏览器 245
11.5.2 文件查看器 250
11.5.3 项目管理 255
11.5.4 项目的编译和运行 263
11.5.5 定制KDevelop 265
11.6 使用KAppWizard创建应用程序 271
11.6.1 KAppWizard的调用 271
11.6.2 第一次编译 276
11.6.3 源程序框架 278
11.6.4 项目的其他内容 284
11.7 应用程序视图设计 285
11.7.1 使用Qt/KDE库视图 285
11.7.2 创建自己的视图 286
11.8 配置菜单和工具条 287
11.8.1 工作原理 287
11.8.2 增加新的菜单 288
11.8.3 增加工具条按钮 288
11.9 构造对话框 289
11.9.1 Qt和KDE控件 289
11.8.4 配置状态条 289
11.8.5 键盘快捷键配置 289
11.9.2 构建新的对话框 292
11.9.3 在项目中添加对话框 294
11.10 程序排错 296
11.10.1 Qt程序排错 296
11.10.2 KDE排错宏 298
11.10.3 使用调试器 298
11.11 一个完整的例子 299
11.11.1 使用KAppWizard生成新项目 300
11.11.2 生成对话框 302
11.11.3 添加代码 305