C/C++技术丛书:高级C/C++编译技术[AdvancedCandC++Compiling]
编辑推荐
学习如何编写C/C++代码仅仅是个开始。如果你希望从事系统底层开发,或想深入理解操作系统、编译器及它们之间内在的关联,成为“编程专家”,那么就必须对编译器生成的二进制文件(目标文件、静态库、动态库和可执行文件)的作用和结构进行充分的了解。开源已经在许多方面从根本上改变了软件的原有面貌,越来越多的系统开始采用或集成开源代码,因此对每位开发人员来说,学习和理解这些底层技术也变得十分重要。
本书深入浅出地讲解了构建过程(编译、链接)中的各种细节,从多个角度展示了程序与库文件或代码的集成方法,提出了面向代码复用和系统集成的软件架构设计方法,以及系统开发过程中疑难问题的解决方案。同时,本书也是一本C/C++二进制文件方面的软件工程指南,涵盖中级和专家程序员所需的各方面内容和信息。
通过阅读本书,你将学到:
构建过程(编译和链接)与装载过程的内部原理
静态库、动态库和可执行文件的内部工作机制
面向代码复用和系统集成的软件架构设计方法
编译、链接与运行时出现问题的排查技巧
在Linux和Windows平台下利用二进制文件分析工具进行分析
内容简介
《C/C++技术丛书:高级C/C++编译技术》从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕和技术细节,为深入理解和掌握系统底层技术提供翔实参考和实践指南。和纯粹讲解理论与技术细节的书不同,本书一方面对基本的理论进行了阐述,另一方面则聚焦于C/C++使用静态库和动态库的一些注意事项,并举例说明如何解决实际的链接与装载问题。此外,本书尽量使用通俗易懂的语言来阐述这些知识,并补充了大量示例,避免让读者整天纠结于枯燥的理论。
《C/C++技术丛书:高级C/C++编译技术》共14章,其中第1章至第4章对多任务操作系统、程序生命周期以及代码重用等重要概念进行介绍,为后续内容做铺垫;第5章介绍静态库的使用方法及其设计技巧;第6章至第11章介绍动态库的相关概念,包括不同平台中动态库的技术细节,比如库文件定位、引用解析与符号处理等,以及一些动态库设计的基本方法与原则和不同平台下应当注意的设计细节;第12章至第14章主要给出一些实践方面的总结,便于读者快速查找相关的概念,而且还总结了一些特定平台的二进制文件分析工具。
作者简介
Milan Stevanovic ,资深软件顾问,在多个学科的工程领域都有着丰富的经验。他主要从事的领域是Linux和Windows平台下的多媒体压缩格式及其多媒体框架设计。他热衷于开源,而且是avxsynth开源项目的主要贡献者,对C/C++底层技术有着深入的研究。
卢誉声 ,软件工程师,现就职于思科系统(中国)研发中心云产品研发部。他曾参与服务器后端、前端以及SDK的设计与研发工作,在分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的敏捷实践与开发经验。此外,他还从事C/C++设计与研发工作,对JavaScript、Lua和移动开发平台等也有一定研究。