嵌入式Linux上的C语言编程实践PDF电子书下载
- 电子书积分:13 积分如何计算积分?
- 作 者:韩超,魏治宇,廖文江等著
- 出 版 社:北京:电子工业出版社
- 出版年份:2009
- ISBN:9787121079993
- 页数:378 页
第一部分 基础知识 2
第1章 Linux环境下C语言的开发 2
1.1 Linux下的C语言开发环境 2
1.2 在Linux中使用C语言开发 3
1.2.1 开发流程和开发工具 3
1.2.2 Linux中程序的运行原理 4
第2章 嵌入式环境中的C语言开发 7
2.1 嵌入式C语言的开发环境 7
2.2 嵌入式开发中C语言编程要点 9
第二部分 Linux环境中C语言的开发环境和工具 12
第3章 Linux的文本编辑工具VI 12
3.1 VI编辑器概述 12
3.1.1 VI简介 12
3.1.2 VI的工作模式和使用之前的准备 12
3.1.3 进入和退出VI 13
3.2 VI的增强版VIM 16
3.3 VI编辑器的基本使用方法 17
3.3.1 在屏幕上移动光标 17
3.3.2 插入文本 20
3.3.3 删除文本 22
3.3.4 修改文本内容 25
3.3.5 替换文本内容 27
3.3.6 合并文本内容 30
3.3.7 移动文本内容 30
3.4 VI编辑器的命令和高级操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高级的操作和使用技巧 35
第4章 GCC程序开发工具 39
4.1 GNU工具综述 39
4.2 GCC的编译和连接 43
4.2.1 工程示例 43
4.2.2 编译、汇编和连接 46
4.2.3 动态库 48
4.3 GCC的二进制工具 49
4.3.1 ar(归档工具) 49
4.3.2 readelf(读取ELF格式文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nun(显示符号信息) 55
4.3.5 strip(删除符号) 57
4.3.6 objdump(显示目标文件信息) 58
4.3.7 objcopy(复制目标文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make机制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makele使用示例 69
5.2.1 简单的Makele 69
5.2.2 Makefile中的依赖关系 71
5.2.3 Makele中使用隐含规则来编译程序 73
5.2.4 Makefile中指定依赖关系的编译 76
5.3 自动生成Makefile 78
5.3.1 自动生成Makefile的意义和相关工具 78
5.3.2 自动生成Makefile的流程 79
第6章 GDB调试工具 85
6.1 GDB简介 85
6.2 使用GDB调试程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高级命令 92
6.2.4 attach命令的使用 94
6.3 远程GDB调试 95
6.3.1 本地GDB调试和远程GDB调试的比较 95
6.3.2 远程GDB调试流程 97
6.3.3 远程GDB调试示例 98
第三部分 库函数 106
第7章 C语言标准库函数 106
7.1 ISO的C语言标准库函数分类 106
7.2 标准格式化输入/输出类函数 107
7.2.1 scanf函数:格式化输入字符串 107
7.2.2 printf函数:格式化输出字符串 109
7.2.3 putchar函数:输出字符到标准输出 111
7.2.4 getchar函数:从标准输入获取字符 111
7.2.5 putc函数:向文件输出字符 112
7.2.6 getc函数:从文件输入字符 112
7.2.7 gets函数:获得字符串 112
7.2.8 puts函数:输出指定字符串 113
7.2.9 ungetc函数:把字符写回流中 113
7.3 字符处理类函数 114
7.4 字符串处理及转换函数 116
7.4.1 sprintf函数:格式化输出字符串到一个缓冲区 116
7.4.2 strcat和stmcat函数:字符串连接 119
7.4.3 strcpy和strncpy函数:字符串复制 120
7.4.4 strcmp和stmcmp函数:字符串比较 121
7.4.5 strlen函数:获取字符串长度 122
7.4.6 strchr和strrchr函数:字符/字符串定位 122
7.4.7 strstr函数:字符串查找 123
7.4.8 strrev函数:字符串逆序 124
7.4.9 strupr和strlwr函数:字母形式转换 125
7.4.10 strdup和stmdup函数:字符串复制 125
7.4.11 memset函数:内存设置 126
7.4.12 memmove函数:内存移动 126
7.4.13 memcmp函数:内存比较 127
7.4.14 memcpy函数:内存复制 128
7.5 数学计算类函数 128
7.6 数据结构和算法类函数 133
7.6.1 bsearch函数:二元搜索 133
7.6.2 Ifind函数:线性搜索 134
7.6.3 lsearch函数:线性搜索 135
7.6.4 qsort函数:利用快速排序法排列数组 136
7.6.5 rand函数:产生随机数 136
7.6.6 srand函数:设置随机数种子 137
7.7 文件1/O操作类相关函数 137
7.7.1 fopen函数:打开文件 138
7.7.2 fclose函数:关闭文件 139
7.7.3 fgetc函数:从文件中读取一个字符 139
7.7.4 fputc函数:将一指定字符写入文件流中 139
7.7.5 fgets函数:从文件中读取一字符串 140
7.7.6 fputs函数:将一指定的字符串写入文件内 140
7.7.7 rewind函数:重设文件流的读写位置为文件开头 141
7.7.8 ftell函数:取得文件流的读取位置 141
7.7.9 fseek函数:移动文件流的读写位置 141
7.7.10 fwrite函数:将数据写至文件流 142
7.7.11 fread函数:从文件流读取数据 142
7.7.12 remove函数:删除文件 143
7.7.13 rename函数:更改文件名称或位置 143
7.7.14 feopen函数:重新打开文件 144
7.7.15 fflush函数:同步缓冲区 144
7.7.16 fgetpos函数:获得文件位置 145
7.7.17 fsetpos函数:设置文件位置 145
7.7.18 mktemp函数:建立临时文件 146
7.7.19 tmpfile函数:临时文件 146
7.7.20 tmpnam:得到临时文件名 147
7.8 日期时间类函数 147
7.8.1 clock函数:获得CPU时间 148
7.8.2 time函数:获得当前日历时间 148
7.8.3 difftime函数:获得时间差值 148
7.8.4 gmtime函数:将日历时间转换成UTC时间 149
7.8.5 mktime函数:将UTC时间转换成日历时间 149
7.8.6 asctime函数:将UTC时间转换成字符串 149
7.8.7 ctime函数:将日历时间转换成当地时间的字符串 150
7.8.8 localtime函数:将日历时间转换成本地时间 150
7.8.9 strftime函数:转换日期和时间格式 151
7.9 国际化和本地化函数 152
7.9.1 setlocale函数:本地化控制函数 153
7.9.2 localeconv函数:本地化转换 154
7.10 错误处理类函数 155
7.10.1 clearerr函数:清除流中的结束指示符和错误指示符 155
7.10.2 feof函数:指示文件结束 155
7.10.3 ferror函数:指示文件出错 156
7.10.4 perror函数:输出出错信息 156
7.10.5 errno函数:错误编号记录 156
7.11 其他一些工具函数 157
7.11.1 asse函数:程序诊断 157
7.11.2 长跳转函数 157
7.11.3 可变长的参数控制函数 160
7.11.4 获取结构体成员函数(宏) 161
7.12 一些标准库中有用的宏 161
第8章 Linux中C语言的扩展库函数 163
8.1 文件1/O操作函数 163
8.1.1 open函数:打开文件 163
8.1.2 close函数:关闭文件 164
8.1.3 read函数:读文件 165
8.1.4 write函数:写文件 165
8.1.5 lseek函数:文件定位 167
8.1.6 ioctl函数:文件控制 167
8.1.7 flock函数:锁定文件 167
8.1.8 mmap函数和munmap函数:内存映射 168
8.1.9 create函数:创建新文件 170
8.1.10 dup函数和dup2函数:复制文件描述符 171
8.1.11 fcntl函数:改变已打开的文件的属性 171
8.2 文件权限相关的操作函数 172
8.2.1 access函数:判断是否具有存取文件的权限 172
8.2.2 chown函数和fchown函数:改变文件的所有者 173
8.2.3 chmod函数和fchmod函数:改变权限 173
8.2.4 unlink函数:删除文件 173
8.2.5 utime函数和utimes函数:改变文件时间 174
8.2.6 umask函数:设置建立新文件时的权限掩码 175
8.2.7 link函数:建立文件连接 175
8.2.8 stat函数、fstat函数和lstat函数:获取文件信息 175
8.3 用户组操作函数 176
8.3.1 getgid函数和setgid函数:获得/设置组识别码 176
8.3.2 getegid函数和setegid函数:获得/设置有效的组识别码 177
8.3.3 getuid函数和setuid函数:获得设置真实的用户识别码 177
8.3.4 geteuid函数和seteuid函数:获得/设置有效的用户识别码 178
8.3.5 getgroups函数和setgroups函数:获得/设置组代码 178
8.4 信号类函数 179
8.4.1 kill函数:传送信号给指定的进程 181
8.4.2 raise函数:信号发送函数 181
8.4.3 alarm函数:设置超时函数 182
8.4.4 signal函数:信号安装函数 182
8.5 进程处理函数 183
8.5.1 getpid函数和getppid函数:获得进程1D和父进程ID 183
8.5.2 fork函数:建立子进程 183
8.5.3 sleep函数和usleep函数:让进程暂停执行一段时间 185
8.5.4 exec函数族:找到可执行文件 185
8.5.5 _exit函数和_Exit函数:结束进程执行 188
第四部分 C语言高级编成 190
第9章 动态内存的堆与栈 190
9.1 程序内存区域的使用 190
9.1.1 静态内存与动态内存 190
9.1.2 C语言中的动态内存 191
9.2 C程序中栈空间的使用 196
9.2.1 参数使用栈空间 196
9.2.2 自动变量使用栈空间 199
9.2.3 程序中较大的栈 201
9.2.4 栈空间的特性 202
9.3 C程序中的堆空间使用 203
9.3.1 分配和释放堆内存的库函数 203
9.3.2 库函数使用 204
9.3.3 堆内存的特性 218
9.4 堆内存和栈内存使用的比较 222
9.4.1 利用返回值传递信息 222
9.4.2 利用参数传递信息 226
9.4.3 堆与栈内存管理的区别 231
第10章 函数指针的使用 232
10.1 函数指针的概念 232
10.1.1 C语言函数的本质 232
10.1.2 函数指针在C语言中的意义 234
10.2 函数指针的使用 237
10.2.1 函数指针使用初步 237
10.2.2 函数指针的类型定义 240
10.2.3 函数指针作为结构体成员 242
10.2.4 函数指针作为函数的参数 243
10.2.5 函数指针作为函数的返回值 244
10.2.6 函数指针数组 246
10.3 函数指针使用示例 248
第11章 回调函数的使用 252
11.1 回调函数的概念与作用 252
11.1.1 程序调用的方式 252
11.1.2 回调函数的作用 254
11.2 回调函数的语法 254
11.2.1 简单的回调函数 254
11.2.2 完全形式的回调函数 256
11.3 回调函数的使用 259
11.3.1 qsort中的回调函数 259
11.3.2 atexit和on_exit函数的注册退出函数 263
第12章 C语言实现对象编程 268
12.1 C语言实现基于对象编程的概念与作用 268
12.2 C语言基于对象编程实现封装 269
12.2.1 简单的程序示例 269
12.2.2 C语言基于对象编程的详解 272
12.2.3 C语言基于对象编程与C++面向对象编程的对比 275
12.3 C语言基于对象编程实现部分继承功能 278
12.3.1 利用数据结构的包含实现继承功能 279
12.3.2 利用私有指针实现继承功能 282
12.3.3 C语言实现继承的总结 287
12.4 C语言基于对象编程实现部分多态功能 288
12.4.1 利用操作指针组的包含实现多态功能 288
12.4.2 C语言实现多态功能的总结 292
12.5 对C语言实现基于对象编程的思考 292
12.5.1 C语言基于对象编程的特性 292
12.5.2 C语言基于对象编程中接口、实现和调用者的关系 293
第五部分 在嵌入式环境下的C语言编程 295
第13章 C语言程序的内存布局 295
13.1 C语言程序的存储区域 295
13.2 C语言程序的段 297
13.2.1 段的分类 297
13.2.2 程序中段的使用 298
13.3 可执行程序的连接 301
13.3.1 可执行程序的组成 301
13.3.2 各个目标文件的关系 303
13.3.3 连接错误示例 304
13.4 C语言程序的运行 309
13.4.1 RAM调试运行 311
13.4.2 固化程序的XIP运行 312
13.4.3 固化程序的加载运行 313
13.4.4 C语言程序的运行总结 315
第14章 嵌入式C语言常用语法 317
14.1 内存指针操作 317
14.1.1 内存操作的意义 317
14.1.2 使用指针操作内存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系统指针的实际应用 325
14.2 位操作 327
14.2.1 位操作的意义 327
14.2.2 位操作的语法 328
14.3 大小端与对齐问题 330
14.3.1 大小端问题 331
14.3.2 内存对齐问题 335
14.3.3 结构体成员的对齐问题 338
14.4 程序的跳转 344
14.4.1 嵌入式系统程序跳转的类型 344
14.4.2 C语言中实现程序的跳转 345
第15章 嵌入式C语言编程的技巧 348
15.1 程序的优化技巧 348
15.1.1 循环缓冲区 348
15.1.2 查表法 350
15.1.3 针对循环执行效率的优化 353
15.2 关于小数运算 355
15.3 函数参数和返回值的传递 357
15.4 变量的初始化技巧 360
15.4.1 数组的初始化 360
15.4.2 结构体的初始化 362
15.4.3 变量的初始化总结 362
15.5 程序的调试和宏使用的技巧 363
15.5.1 打印文件、函数和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:连接操作符. 366
15.5.4 调试宏的第一种定义方式 367
15.5.5 调试宏的第二种定义方式 368
15.5.6 对调试语句进行分级审查 369
15.5.7 条件编译调试语句 370
15.5.8 使用do&while的宏定义 372
15.6 代码剖析 373
参考文献 378
- 《语文教育教学实践探索》陈德收 2018
- 《彼得·布鲁克导演实践研究》邓小玲著 2019
- 《反思性实践》胡红梅, 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《环境影响评价公众参与理论与实践研究》樊春燕主编 2019
- 《学校特色教育探索与实践》管升起著 2019
- 《幼儿园课程资源丛书 幼儿园语言教育资源》周兢编 2015
- 《物联网与嵌入式技术及其在农业上的应用》马德新 2019
- 《麦肯锡精英这样实践基本功》(日)户塚隆将著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017