第三章 目标文件里有什么
2013-09-24 09:02
288 查看
第三章 目标文件里有什么
1、目标文件的格式
目标文件:源代码编译后但未进行链接的中间文件,有些符号或地址还没有被调整
可执行文件格式:可执行文件windows的PE和linux的ELF、动态链接库windows的.dll和linux的.so、静态链接库windows的.lib和linux的.a
静态链接库:把很多目标文件捆绑在一起形成一个文件,再加上一些索引,理解为包含很多目标文件的包
2、目标文件结构
编译后的机器指令代码、数据,还有链接时需要的信息,如符号表、调试信息、字符串等
1)按照段形式存储
①文件头
描述整个文件属性,有一个段表,描述了文件中各个段的偏移地址及段的属性
②代码段
编译后中的机器代码
③数据段
初始化的全局变量和局部静态变量
④bss段
未初始化的全局变量和局部静态变量
2)数据和指令分段的好处
①装载后,数据和指令被分别映射到两个虚存区域,可以被分别设置成可读写和只读
②分离有利于提高程序的局部性,提高缓存命中率
③系统运行多个该程序的副本,内存只需保存一份程序的指令,节省内存空间
3、C++符号修饰
函数签名包含了一个函数的信息,包含函数名、参数类型、所在类和名称空间
4、extern "C"
作用:C++为了与C兼容
大括号内部的代码会当做C语言代码处理
同时被C语言和C++语言包含,兼容它们,使用C++的宏"__cplusplus",C++编译器会在编译C++程序时默认定义这个宏
1、目标文件的格式
目标文件:源代码编译后但未进行链接的中间文件,有些符号或地址还没有被调整
可执行文件格式:可执行文件windows的PE和linux的ELF、动态链接库windows的.dll和linux的.so、静态链接库windows的.lib和linux的.a
静态链接库:把很多目标文件捆绑在一起形成一个文件,再加上一些索引,理解为包含很多目标文件的包
2、目标文件结构
编译后的机器指令代码、数据,还有链接时需要的信息,如符号表、调试信息、字符串等
1)按照段形式存储
①文件头
描述整个文件属性,有一个段表,描述了文件中各个段的偏移地址及段的属性
②代码段
编译后中的机器代码
③数据段
初始化的全局变量和局部静态变量
④bss段
未初始化的全局变量和局部静态变量
2)数据和指令分段的好处
①装载后,数据和指令被分别映射到两个虚存区域,可以被分别设置成可读写和只读
②分离有利于提高程序的局部性,提高缓存命中率
③系统运行多个该程序的副本,内存只需保存一份程序的指令,节省内存空间
3、C++符号修饰
函数签名包含了一个函数的信息,包含函数名、参数类型、所在类和名称空间
4、extern "C"
作用:C++为了与C兼容
extern "C" { int func(int); int var; }
大括号内部的代码会当做C语言代码处理
同时被C语言和C++语言包含,兼容它们,使用C++的宏"__cplusplus",C++编译器会在编译C++程序时默认定义这个宏
#ifdef __cplusplus extern "C"{ #endif void *memset(void *, int, size_t); #ifdef __cplusplus } #endif
相关文章推荐
- 程序员的自我修养第三章笔记(目标文件有什么)
- 第三章——目标文件里有什么
- 读书笔记《程序员的自我修养》第三章(目标文件里有什么)
- 【程序员的自我修养】第3章 目标文件里有什么?
- 目标文件里面到底有什么(1)?
- 程序员的自我修养<3.目标文件有什么>
- 目标文件里面到底有什么(1)?
- 目标文件里装了什么东西
- 目标文件里面到底有什么(2)?
- 目标文件中到底有什么?
- 聊聊目标文件到底长什么样子
- c/c++目标文件中_ZN****符号是什么意思
- 目标文件里有什么——揭秘目标文件
- 目标文件里有什么
- 程序员的自我修养——3、目标文件里有什么
- 链接、装载和库—目标文件里有什么
- 什么是源文件,目标文件,可执行文件
- 我能用Windows PowerShell做什么:删除一个文件或文件夹(或其它输入的目标)
- 什么是c语言中的目标文件