图书目录

第1部分  Linux系统应用篇

第1章  Linux的安装与配置 2

1.1  旅程开始 2

1.2  本书使用Linux环境介绍 2

1.3  Linux的安装 4

 1.3.1  获取Ubuntu 14.04 4

 1.3.2  选择安装平台 4

 1.3.3  进入Ubuntu 14.04的安装程序 9

 1.3.4  安装Ubuntu 14.04 10

1.4  Linux的配置 19

 1.4.1  认识Gnome桌面环境 19

 1.4.2  Ubuntu的配置 22

 1.4.3  软件安装与升级 24

第2章  Linux常用命令训练 26

2.1  关于Shell 26

2.2  文件操作命令 27

 2.2.1  调用终端控制台 27

 2.2.2  文件浏览 27

 2.2.3  文件复制 29

 2.2.4  文件移动 29

 2.2.5  文件链接 30

 2.2.6  文件删除 30

 2.2.7  文件压缩和备份 31

 2.2.8  修改文件属性 32

 2.2.9  文件搜索 34

2.3  目录操作 36

 2.3.1  创建目录 37

 2.3.2  删除目录 37

 2.3.3  修改当前目录 37

 2.3.4  查看当前目录 37

2.4  用户与系统操作 38

 2.4.1  用户切换 38

 2.4.2  用户信息修改 39

 2.4.3  关闭系统 39

2.5  获得帮助 40

 2.5.1  获取简要帮助 40

 2.5.2  获得详细帮助 40

2.6  变量、流、管道操作 41

 2.6.1  变量赋值 41

 2.6.2  变量的使用 41

 2.6.3  流输出 42

 2.6.4  流的重定向 44

 2.6.5  管道 45

2.7  进程操作 45

 2.7.1  进程查看 46

 2.7.2  发送信号 46

 2.7.3  进程切换 47

2.8  网络操作 48

 2.8.1  网络配置 48

 2.8.2  ping 48

 2.8.3  ARP 49

 2.8.4  FTP 50

2.9  其他命令 50

 2.9.1  日历 50

 2.9.2  命令历史记录 51

 2.9.3  后台操作 51

2.10  思考与练习 52

第3章  vi/vim编辑器的使用 53

3.1  vi的介绍 53

3.2  vi操作模式 53

3.3  vi的命令 54

 3.3.1  状态切换命令 54

 3.3.2  文件保存与退出 54

 3.3.3  光标移动 54

 3.3.4  编辑操作 55

 3.3.5  字符串搜索替换 55

 3.3.6  撤销与重做 55

3.4  启动vi编辑器 56

3.5  使用vi进行文字录入 56

3.6  使用vi修改文本 57

3.7  思考与练习 58

第4章  Shell程序设计 59

4.1  Shell编程简介 59

4.2  系统变量 59

4.3  条件测试 60

 4.3.1  文件状态测试 60

 4.3.2  逻辑操作 60

 4.3.3  字符串测试 61

 4.3.4  数值测试 61

4.4  Shell流程控制语句 61

 4.4.1  if语句 61

 4.4.2  case语句 62

 4.4.3  while语句 62

 4.4.4  for语句 63

4.5  Shell编程中的常用命令与符号 63

 4.5.1  read命令 63

 4.5.2  select命令 63

 4.5.3  大括号 64

 4.5.4  引号 64

 4.5.5  注释 65

4.6  函数 65

4.7  应用实例训练 65

4.8  思考与练习 67

第5章  GCC的安装 68

5.1  GCC简介 68

5.2  解压缩工具tar 68

5.3  在Linux下使用源代码安装软件的基本步骤 69

5.4  获得GCC软件包 70

5.5  解压缩软件包 72

5.6  对源文件进行配置 72

5.7  编译GCC 74

5.8  安装GCC 75

5.9  测试GCC安装结果 76

5.10  思考与练习 77

第6章  GNU开发工具链的使用 78

6.1  gcc命令的使用 78

6.2  调试工具gdb 79

 6.2.1  gdb简介 79

 6.2.2  gdb的使用方法 79

6.3  代码管理make 81

 6.3.1  make简介 81

 6.3.2  Makefile文件的格式 82

 6.3.3  Makefile文件的一些特性 83

 6.3.4  make命令的使用 85

6.4  实例训练 85

 6.4.1  编写程序 87

 6.4.2  调试程序 95

 6.4.3  编写Makefile 98

6.5  思考与练习 99

第2部分  编程开发篇

第7章  Linux常用C函数 102

7.1  使用函数库 102

7.2  字符操作 103

7.3  字符串操作 107

 7.3.1  数据类型转换 108

 7.3.2  字符串数据处理 111

7.4  数学计算操作 116

7.5  数据结构与算法操作 118

7.6  日期时间操作 123

7.7  实例训练 125

 7.7.1  任务分析 125

 7.7.2  编写程序 127

 7.7.3  编译、运行 134

7.8  思考与练习 135

第8章  进程操作 136

8.1  Linux进程工作原理 136

8.2  进程操作函数 137

8.3  信号量 144

8.4  信号量操作的函数 145

8.5  应用实例训练 146

 8.5.1  问题分析 147

 8.5.2  代码编写 147

 8.5.3  编译与运行 152

8.6  思考与练习 153

第9章  信号与定时器 154

9.1  进程间通信与信号 154

9.2  Linux系统中的信号 154

9.3  信号操作相关数据结构 155

9.4  信号操作相关函数 156

9.5  定时器操作相关函数 160

9.6  应用实例训练 161

 9.6.1  程序分析 162

 9.6.2  程序编写 163

 9.6.3  编译与运行 166

9.7  思考与练习 167

第10章  内存管理与用户操作 168

10.1  Linux内存管理 168

10.2  内存操作相关函数 169

10.3  Linux系统中的用户操作 175

10.4  用户管理相关数据结构 176

10.5  用户管理相关函数 177

10.6  用户组管理相关函数 182

10.7  应用实例训练 184

 10.7.1  编写代码 185

 10.7.2  编译与运行 193

10.8  思考与练习 194

第11章  文件操作 195

11.1  Linux的文件系统 195

11.2  文件操作相关函数 197

 11.2.1  文件控制 197

 11.2.2  目录操作 200

 11.2.3  文件流读写控制 204

 11.2.4  文件读写操作 211

11.3  应用实例训练 217

 11.3.1  程序分析 217

 11.3.2  程序编写 218

 11.3.3  编译与运行 225

11.4  思考与练习 225

第3部分  Linux内核篇

第12章  Linux内核裁剪与编译 228

12.1  内核编译选项 228

 12.1.1  常规设置 228

 12.1.2  可加载模块支持 229

 12.1.3  处理器类型及特性 229

 12.1.4  可执行文件格式 229

 12.1.5  网络支持 229

 12.1.6  设备驱动程序选项 230

 12.1.7  文件系统 231

 12.1.8  对于其他配置选项的说明 231

12.2  内核编译与定制 231

 12.2.1  获得Linux内核与补丁 231

 12.2.2  准备编译需要的工具 233

 12.2.3  解压内核 234

 12.2.4  给内核打补丁 234

 12.2.5  设定编译选项 235

 12.2.6  编译与安装内核 237

12.3  安装引导配置 238

 12.3.1  创建initramfs 238

 12.3.2  设置grub 239

 12.3.3  启动选项 239

12.4  思考与练习 240

第13章  模块机制与操作 241

13.1  关于内核编程 241

13.2  Linux的模块机制 241

 13.2.1  Linux内核结构 241

 13.2.2  模块的实现 242

 13.2.3  Linux模块导出符号表 244

 13.2.4  模块参数 244

 13.2.5  模块使用计数 245

13.3  内核调试函数printk( ) 245

13.4  应用实例训练 247

 13.4.1  编写模块源程序 247

 13.4.2  Linux kernel 2.6.26之前版本模块编译、安装及退出 251

 13.4.3  Linux kernel2.6.26以后版本模块编译、安装及退出 253

13.5  思考与练习 256

第14章  Linux中断管理 257

14.1  Linux中断原理 257

 14.1.1  中断控制器 257

 14.1.2  中断处理 258

 14.1.3  中断处理的下半部机制 261

14.2  Tasklet实例解析 262

 14.2.1  编写测试函数 262

 14.2.2  编写Makefile 263

 14.2.3  实验结果分析 263

14.3  在嵌入式Linux下开中断实例解析 264

 14.3.1  硬件电路组成 264

 14.3.2  编写中断服务模块 265

 14.3.3  结果分析 267

14.4  思考与练习 268

第15章  系统调用 269

15.1  系统调用原理 269

15.2  系统调用函数分析 270

 15.2.1  系统调用入口函数 270

 15.2.2  系统调用表 273

15.3  添加系统调用实例训练 275

15.4  思考与练习 277

第16章  内存管理 278

16.1  关于Linux的内存管理 278

 16.1.1  动态存储管理 279

 16.1.2  页面管理 279

 16.1.3  slab分配模式 280

16.2  Linux的内存管理函数 281

16.3  实例训练与分析 282

 16.3.1  在用户空间用valloc/malloc分配内存 282

 16.3.2  在内核空间用kmalloc/vmalloc分配内存 282

16.4  思考与练习 290

第17章 时钟定时管理 291

17.1  内核定时器分类 291

 17.1.1  实时时钟RTC 291

 17.1.2  时间戳计数器TSC 291

 17.1.3  可编程间隔定时器PIT 291

 17.1.4  SMP系统上的本地APIC定时器 292

 17.1.5  高精度计时器 293

17.2  内核时钟管理分析 293

 17.2.1  时钟源及其初始化 293

 17.2.2  软定时器 295

17.3  应用实例训练 296

 17.3.1  编写测试实例 296

 17.3.2  编写Makefile 298

 17.3.3  编译及运行结果 298

17.4  思考与练习 299

第18章 设备驱动程序的编写 300

18.1  Linux驱动程序 300

 18.1.1  驱动程序分类 300

 18.1.2  驱动程序开发的注意事项 301

 18.1.3  设备目录 301

18.2  Linux驱动数据结构分析 302

 18.2.1  Linux驱动核心结构体 302

 18.2.2  设备的内核操作函数 304

18.3  驱动程序实例训练 306

 18.3.1  以模块的方式加载驱动程序 306

 18.3.2  测试驱动程序 311

18.4  编译时向内核添加新设备 312

18.5  思考与练习 315

第4部分  高级编程篇

第19章  Qt图形界面设计 318

19.1  X-Windows概述 318

19.2  Qt编程 318

 19.2.1  概述 318

 19.2.2  Qt Creator 319

 19.2.3  Qt信号与Slot机制 319

19.3  Qt安装方法 321

19.4  应用实例训练 324

 19.4.1  创建工程目录打开Qt Creator 324

 19.4.2  新建工程 324

 19.4.3  绘制窗体 325

 19.4.4  编写代码 327

 19.4.5  编译运行 330

19.5  思考与练习 330

第20章  MySQL数据库设计与编程 331

20.1  MySQL的特性 331

20.2  数据库编程概述 333

20.3  Qt中的数据库编程 333

 20.3.1  QSqlDriver 333

 20.3.2  QSqlDatabase 334

 20.3.3  QSqlQuery 336

20.4  应用实例训练 338

 20.4.1  数据库的建立 338

 20.4.2  应用程序的建立 344

 20.4.3  运行结果 351

20.5  思考与练习 353

第21章  网络通信高级编程 354

21.1  网络编程概述 354

21.2  Socket编程模型 355

21.3  Qt网络编程中用到的类和方法 355

 21.3.1  QtcpSocket 355

 21.3.2  QTcpServer 357

 21.3.3  QThread 359

21.4  应用实例训练 359

 21.4.1  建立工程 360

 21.4.2  数据结构设计 362

 21.4.3  界面设计 367

 21.4.4  动作设计 368

 21.4.5  编译与运行 372

21.5  思考与练习 374

后记 375

??

??

??

??

Linux操作系统应用与开发教程

目  录