一. 计算机领域
1.计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。(dso的pic通过got表来实现,vmware虚拟机,java的跨平台等等)
2.计算机硬件为os提出接口,供os使用;os为应用程序提供api,让其使用os实现的功能;.....;在层次结构的实现中,下层提供接口和服务供上层使用。
二. 编译链接
1. gcc生成可执行文件的过程: 预编译--编译--汇编--链接
2.编译的基本过程: 词法分析--语法分析--语义分析--中间代码生成(优化)--目标代码生成与优化
3.链接器的年龄比编译器的长
三。目标文件(elf,coff,pe)
1、目标文件以段(section)的形式表示,elf包括header,section表和各种段(含有text段、data段、bss段、rodata段、comment段、重定位表、符号表、init、fini、字符串表、调试信息等);
2. 符号修饰和函数签名
3.弱符号、弱引用
四、静态链接
1. 两步:合并目标文件的段、空间与地址分配, 符号解析与重定位
2.commom块
3.c++重复代码的消除(模板函数、虚函数表、默认构造函数等)