图书介绍

嵌入式Linux上的C语言编程实践PDF|Epub|txt|kindle电子书版本网盘下载

嵌入式Linux上的C语言编程实践
  • 韩超,魏治宇,廖文江等著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121079993
  • 出版时间:2009
  • 标注页数:378页
  • 文件大小:89MB
  • 文件页数:391页
  • 主题词:Linux操作系统-程序设计;C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

嵌入式Linux上的C语言编程实践PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 基础知识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的文本编辑工具VI12

3.1 VI编辑器概述12

3.1.1 VI简介12

3.1.2 VI的工作模式和使用之前的准备12

3.1.3 进入和退出VI13

3.2 VI的增强版VIM16

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和Makefile67

5.1.1 make机制概述67

5.1.2 make和Makefile的使用68

5.2 Makele使用示例69

5.2.1 简单的Makele69

5.2.2 Makefile中的依赖关系71

5.2.3 Makele中使用隐含规则来编译程序73

5.2.4 Makefile中指定依赖关系的编译76

5.3 自动生成Makefile78

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和父进程ID183

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

热门推荐