1 基本开发环境 1
1.1 Linux编程综述 1
1.1.1 Linux编程特点 1
1.1.2 Linux编程与Windows编程的主要区别 1
1.1.3 Linux编程与Unix编程的主要区别 2
1.2 Linux编程环境 2
1.2.1 编程系统安装 2
1.2.2 Linux系统文件分布和组织 5
1.2.3 Linux系统命令操控技术 7
1.2.4 文本编辑器使用技术 18
1.2.5 源程序代码的获取与阅读方法 27
练习思考题 27
2 基础开发技术 29
2.1 编译和链接 29
2.1.1 GNU编译器简介 29
2.1.2 GCC编译过程 29
2.1.3 GCC警告选项 36
2.1.4 GCC优化选项 38
2.1.5 GCC调试选项 41
练习思考题 41
参考资料 41
2.2 程序库的使用和开发 41
2.2.1 程序库历史 41
2.2.2 静态库 42
2.2.3 动态库 43
2.2.4 常用C语言库 48
练习思考题 51
参考资料 51
2.3 程序调试 51
2.3.1 基本GDB命令 52
2.3.2 高级GDB命令 62
2.3.3 图形化调试工具 67
练习思考题 68
2.4 进程和线程 68
2.4.1 Linux进程模型 68
2.4.2 进程创建和退出 73
2.4.3 信号 78
2.4.4 进程间通信 82
2.4.5 线程 87
练习思考题 93
2.5 内存管理 93
2.5.1 进程虚拟地址空间 93
2.5.2 内存的分配、释放和映射 96
练习思考题 99
3 Linux下的Qt编程 100
3.1 Qt编程综述 100
3.1.1 XWindow编程综述和Qt的基本概念 100
3.1.2 Qt简介 100
3.1.3 “Hello world!”in Qt 101
练习思考题 107
3.1.4 Qt库的类层次结构 107
3.2 Qt的基础类 109
3.2.1 QString 109
练习思考题 112
3.2.2 QWidget 112
练习思考题 121
3.2.3 QApplication和Qt的国际化 121
练习思考题 129
小结 129
3.3 signal和slot 130
3.3.1 signal和slot的概念 130
3.3.2 signal和slot的使用 131
3.3.3 signal和slot及其相关技术的本质 135
练习思考题 136
小结 136
3.4 Qt的基本控件 136
3.4.1 QButton,QLabel,QLineEdit 136
练习思考题 143
3.4.2 QComboBox,QListBox,QSlider,QProgress 143
3.4.3 使用QT Designer设计界面 146
练习思考题 155
3.5 系统相关程序的开发 155
3.5.1 文件系统的交互 155
练习思考题 161
3.5.2 和终端程序的交互 161
练习思考题 168
小结 168
参考资料 168
4 脚本编程 169
4.1 Shell脚本编程 169
4.1.1 Shell介绍、定义和功能 169
4.1.2 Linux Shell编程工具箱 172
4.1.3 Shell脚本编程 180
练习思考题 191
4.2 Python脚本编程 191
4.2.1 Python语言概述 192
4.2.2 Python编程基本概念 194
4.2.3 控制流 201
4.2.4 函数 206
4.2.5 高级数据结构 212
练习思考题 220
5 代码组织、管理与发布 221
5.1 使用GNU make管理多文件项目 221
5.1.1 多文件项目架构分析 222
5.1.2 Makefile结构分析 223
5.1.3 Makefile的规则 225
5.1.4 伪目标技术 235
5.1.5 Makefile中的变量 238
5.1.6 Makefile的隐含规则 249
5.1.7 Makefile中的函数 257
5.1.8 执行make 260
5.2 版本控制工具CVS 265
5.2.1 版本控制简介 265
5.2.2 版本控制工具CVS的使用 265
5.3 使用autoconf和automake开发自配置软件 273
5.3.1 什么是autoconf 273
5.3.2 autoconf是如何工作的 273
5.3.3 使用autoconf开发 273
5.3.4 使用automake维护Makefile 279
练习思考题 284