Linux GNU C 程序观察

本书特色

[

本书所讨论的内容是“C语言程序设计”类课程的后续知识,涉及C程序在Linux环境下经过GCC编译/链接生成可执行文件以及在系统中运行的问题。本书能使读者在面对C程序的工程实践问题时,做到心中有数、处处不存疑。 全书共7章,第1章介绍环境准备,第2章介绍C程序的预处理、编译、汇编和链接的全过程,并介绍了一点关于GCC编译命令及编译选项、GDB调试初步概念,第3章专注于编译环节,即从C到汇编的转换,第4章专注于链接过程,第5章介绍可执行文件在系统中运行时,观察进程与系统的关系、进程对库的调用、程序异常行为等问题,第6、7章介绍一些性能剖析方法,包括GCC自带工具、库函数打桩方法、valgrind及perf工具的简单使用等,第8章介绍一个综合性的实例,即如何将HDFS文件系统使用的gzip压缩,从利用zlib库在CPU上计算转换成利用FPGA加速卡的过程。该实例涉及库的使用和修改、makefile以及相应的C程序实现等多方面知识,让读者从一个工程需求的角度考察其方案与实现。每章后面都有一些练习题,其中有一个与zlib库相关的任务贯穿了各章,读者通过这个连贯的练习将各章知识融会贯通。 本书可以作为计算机及相关专业高年级本科生或研究生学习Linux环境下的C程序设计教学用书,对希望深入了解Linux内核的读者和相关开发人员也非常有参考价值。

]

内容简介

[

本书所讨论的内容是“C语言程序设计”类课程的后续知识,涉及C程序在Linux环境下经过GCC编译/链接生成可执行文件以及在系统中运行的问题。本书能使读者在面对C程序的工程实践问题时,做到心中有数、处处不存疑。
全书共7章,章介绍环境准备,第2章介绍C程序的预处理、编译、汇编和链接的全过程,并介绍了一点关于GCC编译命令及编译选项、GDB调试初步概念,第3章专注于编译环节,即从C到汇编的转换,第4章专注于链接过程,第5章介绍可执行文件在系统中运行时,观察进程与系统的关系、进程对库的调用、程序异常行为等问题,第6、7章介绍一些性能剖析方法,包括GCC自带工具、库函数打桩方法、valgrind及perf工具的简单使用等,第8章介绍一个综合性的实例,即如何将HDFS文件系统使用的gzip压缩,从利用zlib库在CPU上计算转换成利用FPGA加速卡的过程。该实例涉及库的使用和修改、makefile以及相应的C程序实现等多方面知识,让读者从一个工程需求的角度考察其方案与实现。每章后面都有一些练习题,其中有一个与zlib库相关的任务贯穿了各章,读者通过这个连贯的练习将各章知识融会贯通。
本书可以作为计算机及相关专业高年级本科生或研究生学习Linux环境下的C程序设计教学用书,对希望深入了解Linux内核的读者和相关开发人员也很好有参考价值。

]

作者简介

[

深圳大学计算机与软件学院副教授,广东省国产高性能计算系统工程技术研究中心副主任、深圳市服务计算与应用重点实验室常务副主任,长期从事高性能计算研究。华中科技大学计算机科学与技术博士学位。著《OpenMP编译原理及实现技术》《Linux技术内幕》《操作系统之编程观察》译《Intel Parallel Studio环境下的并行程序设计》。发表论文40多篇(含SCI/EI索引多篇),承担和参与国家、省、市科研项目多项,2009-2010年参与基于龙芯3多核处理器的万亿次个人高性能计算机KD-60研制2011~2012年参与基于龙芯3号8核处理器的普及型高性能计算机KD-90研制,上述成果通过安徽省科技厅鉴定。2004-今,深圳大学计算机与软件学院从事科研与教学工作,本科及研究生课程:《操作系统》《现代操作系统》《操作系统课程设计》《计算机体系结构》《Intel并行编程工具》等。

]

目录

第1章实验环境构建11.1安装Linux11.1.1下载CentOS711.1.2CentOS7安装21.2虚拟机安装Linux91.2.1VirtualBox安装91.2.2虚拟机配置131.2.3虚拟机安装Linux201.3ssh远程终端访问201.3.1PuTTY客户端211.3.2无密码登录241.3.3Xming图形终端261.4初次接触Linux281.4.1简单操作281.4.2运行HelloWorld程序331.5小结37
第2章程序编译与运行382.1编译的各阶段392.1.1源代码392.1.2预处理402.1.3编译442.1.4汇编462.1.5链接482.1.6GCC编译驱动492.2GCC基本用法512.2.1C语言标准532.2.2库的使用542.2.3搜索路径602.2.4编译警告652.3GDB调试702.3.1代码准备712.3.2运行代码732.3.3查看变量和内存772.3.4图形前端TUI832.4小结84练习84Linux GNU C程序观察目录第3章数据、运算与控制863.1×86��64 ISA863.1.1寄存器863.1.2内存空间与I/O空间913.2数据923.2.1数据大小、字节序923.2.2数组、结构体和联合体953.2.3数据布局983.3运算1023.3.1数据传送1023.3.2算术/逻辑运算1043.3.3加载有效地址1063.4控制1073.4.1条件跳转1073.4.2函数调用1273.5小结159练习159
第4章链接与可执行文件1614.1生成可执行文件1614.1.1样例代码1624.1.2进程影像1644.1.3ELF文件与装入1684.2可重定位目标文件1824.2.1目标文件的节(section)1834.2.2符号及重定位1874.2.3符号表1964.3静态链接2004.3.1布局2004.3.2符号解析2054.3.3静态重定位2074.4动态链接2144.4.1样例代码2154.4.2动态链接库2164.4.3动态链接步骤2304.5小结250练习251
第5章链接脚本与makefile2525.1二进制工具和链接脚本2525.1.1binutils2525.1.2链接器脚本2545.2makefile2675.2.1makefile基本格式2675.2.2makefile规则2705.2.3makefile变量2745.2.4文件指示2775.2.5函数2795.2.6make2815.3小结282练习283
第6章程序运行2846.1装入与运行2846.1.1ELF装载器2846.1.2内核代码2856.1.3进程与线程2856.1.4工作环境2876.2基本行为观察2896.2.1ptrace2896.2.2strace2956.2.3GDB断点原理3006.2.4ltrace3016.3异常行为3046.3.1非法操作3046.3.2响应信号3096.3.3core文件3156.4小结325练习326
第7章性能剖析3277.1打桩方法3277.1.1源代码预处理时3287.1.2静态链接时3307.1.3运行加载时3327.2gprof3347.2.1工作原理3357.2.2gprof示例3357.2.3性能数据解读3437.2.4图形化显示(gprof2dot.py graphviz)3487.3gcov3497.3.1基于函数分析的缺点3497.3.2gcov逐行分析3517.4其他分析工具3557.4.1Valgrind3557.4.2perf3687.5小结375练习376
第8章综合实例: HDFS中实现zlib库的旁路3778.1项目需求3778.2系统分析3788.2.1整体方案3788.2.2Haddop的gzip JNI3798.2.3zlib分析3828.2.4测定z_stream成员大小3858.3编码实现3878.3.1zlib日志3878.3.2Log4c3888.3.3使用libcprss.so库3968.4功能验证3988.4.1准备输入文件3998.4.2zlib原生库的压缩3998.4.3libcprss.so库的压缩4018.5小结401
附录402

封面

Linux GNU C 程序观察

书名:Linux GNU C 程序观察

作者:罗秋明

页数:0

定价:¥59.0

出版社:清华大学出版社

出版日期:2020-05-01

ISBN:9787302545491

PDF电子书大小:32MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注