高级C C 编译技术(典藏版)_第1页
高级C C 编译技术(典藏版)_第2页
高级C C 编译技术(典藏版)_第3页
高级C C 编译技术(典藏版)_第4页
高级C C 编译技术(典藏版)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

读书笔记模板高级CC++编译技术(典藏版)01思维导图读书笔记作者介绍内容摘要目录分析精彩摘录目录0305020406思维导图技术典藏版过程系统文件二进制方面动态库第章符号文件二进制静态库阶段库器链接动态过程本书关键字分析思维导图内容摘要内容摘要学习如何编写C和C++代码仅仅是个开始。如果你希望从事系统底层开发工作,或想深入理解操作系统、编译器及它们之间内在的关联,成为编程专家,那么就必须充分了解编译器生成的二进制文件(目标文件、静态库、动态库和可执行文件)的作用和结构。开源已经在许多方面从根本上改变了软件的原有面貌,越来越多的系统开始采用或集成开源代码,因此对每位开发人员来说,学习和理解这些底层技术也变得十分重要。本书深入浅出地讲解了构建过程(编译、链接)中的细节,从多个角度展示了程序与库文件或代码的集成方法,提出了面向代码重用和系统集成的软件架构设计方法,同时展示了系统开发过程中疑难问题的解决方案。另外,本书也是一本C和C++二进制文件方面的软件工程指南,涵盖中级和专家级程序员所需的各方面内容和信息。通过阅读本书,你将学到:*构建过程(编译和链接)与装载过程的内部原理。*静态库、动态库和可执行文件的内部工作机制。*面向代码重用和系统集成的软件架构设计方法。读书笔记读书笔记以前排查c/c++问题的时候,一直在找一本这样的书,后来找到一本《程序员的自我修养:链接、装载与库》,今天发现了第二本,很好,推荐,《高级C/C++编译技术(典藏版)》#今日份技术。内容挺一般的,书名取得有点名不副实了……ELF文件格式的内容没详细讲,重定位、符号解析也是几十个字就介绍完了。目录分析1.1一些有用的抽象概念1.3虚拟内存1.2存储器层次结构与缓存策略第1章多任务操作系统基础1.4虚拟地址1.5进程的内存划分方案1.6二进制文件、编译器、链接器与装载器的作用1.7小结第1章多任务操作系统基础2.1基本假设2.3编译阶段2.2编写代码第2章程序生命周期阶段基础2.5可执行文件属性2.4链接第2章程序生命周期阶段基础2.3编译阶段2.3.1基本概念2.3.2相关概念2.3.3编译的各个阶段2.3.4目标文件属性2.3.5编译过程的局限性2.4链接2.4.1链接阶段2.4.2链接器视角2.5可执行文件属性2.5.1各种节的类型2.5.2各种符号类型3.1shell的重要性3.2内核的作用3.3装载器的作用3.4程序执行入口点第3章加载程序执行阶段3.3装载器的作用3.3.1装载器视角下的二进制文件(节与段)3.3.2程序加载阶段3.4程序执行入口点3.4.1装载器查找入口点3.4.2_start()函数的作用3.4.3__libc_start_main()函数的作用3.4.4栈和调用惯例4.1静态库4.2动态库4.3静态库和动态库对比4.4一些有用的类比4.5结论:二进制重用概念所产生的影响12345第4章重用概念的作用4.2动态库4.2.1动态库和共享库4.2.2动态链接详解4.2.3Windows平台中动态链接的特点4.2.4动态库的特点4.2.5应用程序二进制接口4.3静态库和动态库对比4.3.1导入选择条件的差异4.3.2部署难题5.1创建静态库5.3静态库设计技巧5.2静态库的使用场合第5章使用静态库5.1创建静态库5.1.1创建Linux静态库5.1.2创建Windows静态库5.3静态库设计技巧5.3.1丢失符号可见性和唯一性的可能性5.3.2静态库使用禁忌5.3.3静态库链接的具体规则5.3.4将静态库转换成动态库5.3.5静态库在64位Linux平台上的问题6.1创建动态库6.3动态链接模式6.2设计动态库第6章动态库的设计:基础篇6.1创建动态库6.1.1在Linux中创建动态库6.1.2在Windows中创建动态库6.2设计动态库6.2.1设计二进制接口6.2.2设计应用程序的二进制接口6.2.3控制动态库符号的可见性6.2.4完成链接需要满足的条件6.3动态链接模式6.3.1加载时动态链接6.3.2运行时动态链接6.3.3比较两种动态链接模式7.1典型用例场景7.2构建过程中库文件的定位规则7.3运行时动态库文件的定位规则7.4示例:Linux构建时与运行时的库文件定位第7章定位库文件7.1典型用例场景7.1.1开发用例场景7.1.2用户运行时用例场景7.2构建过程中库文件的定位规则7.2.1Linux构建过程中的库文件定位规则7.2.2Windows构建过程中的库文件定位规则7.3运行时动态库文件的定位规则7.3.1Linux运行时动态库文件的定位规则7.3.2Windows运行时动态库文件的定位规则8.1解析内存地址的必要性8.3地址转换引发的问题8.2引用解析中的常见问题第8章动态库的设计:进阶篇8.5链接器-装载器协作实现技术8.4链接器-装载器协作第8章动态库的设计:进阶篇8.3地址转换引发的问题8.3.1情景1:客户二进制文件需要知道动态库符号地址8.3.2情景2:被装载的库不需要知道其自身符号地址8.4链接器-装载器协作8.4.1总体策略8.4.2具体技术8.4.3链接器重定位提示概述8.5链接器-装载器协作实现技术8.5.1装载时重定位8.5.2位置无关代码9.1重复符号的定义9.2重复符号的默认处理9.3在动态库链接过程中处理重复符号9.4特定重复名称案例分析9.5小提示:链接并不提供任何类型的命名空间继承12345第9章动态链接时的重复符号处理9.3在动态库链接过程中处理重复符号9.3.1处理重复符号问题的一般策略9.3.2链接器解析动态库重复符号的模糊算法准则9.4特定重复名称案例分析9.4.1案例1:客户二进制文件符号与动态库ABI函数冲突9.4.2案例2:不同动态库的ABI符号冲突9.4.3案例3:动态库ABI符号和另一个动态库局部符号冲突9.4.4案例4:两个未导出的动态库符号冲突10.1主次版本号与向后兼容性10.3Windows动态库版本控制10.2Linux动态库版本控制方案第10章动态库的版本控制10.1主次版本号与向后兼容性10.1.1主版本号变更10.1.2次版本号变更10.1.3修订版本号10.2Linux动态库版本控制方案10.2.1基于soname的版本控制方案10.2.2基于符号的版本控制方案10.3Windows动态库版本控制10.3.1DLL版本信息10.3.2指定DLL版本信息10.3.3查询并获取DLL版本信息11.2提示和技巧11.1插件第11章动态库:其他主题11.1插件11.1.1导出规则11.1.2一些流行的插件架构11.2提示和技巧11.2.1使用动态库的实际意义11.2.2其他主题12.1快速查看工具12.3部署阶段工具12.2详细信息分析工具第12章Linux工具集12.5静态库工具12.4运行时分析工具第12章Linux工具集12.1快速查看工具12.1.1file实用程序12.1.2size实用程序12.2详细信息分析工具12.2.1ldd12.2.2nm12.2.3objdump12.2.4readelf12.3部署阶段工具12.3.1chrpath12.3.2patchelf12.3.3strip12.3.4ldconfig12.4运行时分析工具12.4.1strace12.4.2addr2line12.4.3gdb13.1链接过程调试13.2确定二进制文件类型13.3确定二进制文件入口点13.4列出符号信息第13章平台实践13.5查看节的信息13.6查看段的信息13.7反汇编代码13.8判断是否为调试构建第13章平台实践13.9查看加载时依赖项13.10查看装载器可以找到的库文件13.11查看运行时动态链接的库文件13.12创建和维护静态库第13章平台实践13.3确定二进制文件入口点13.3.1获取可执行文件入口点13.3.2获取动态库入口点13.5查看节的信息13.5.1列出所有节的信息13.5.2查看节的信息13.7反汇编代码13.7.1反汇编二进制文件13.7.2反汇编正在运行的进程13.11查看运行时动态链接的库文件13.11.1strace实用程序13.11.2LD_DEBUG环境变量13.11.3/proc/<PID>/maps文件13.11.4lsof实用程序13.11.5通过编程方式查看14.1库管理器lib.exe14.3DependencyWalker工具14.2dumpbin实用程序第14章Windows工具集14.1库管理器lib.exe14.1.1使用lib.exe处理静态库14.1.2使用lib.exe处理动态库14.2dumpbin实用程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论