Linux目标文件的格式,目标文件是怎么样的?

目标文件的格式:可执行文件格式(Executable)

【1】现在PC平台主流的可执行文件格式(Executable),主要是Windows下的PE,Linux下的ELF。

【2】目标文件就是:linux下编译后未进行连接后的.o文件。他和可执行文件内容和格式很相似,,所以一般采用相同的格式存储。

【3】动态链接库:Windows下的.dll,Linux下的.so

 静态链接库:Windows下的.lib,Linux下的.a

查看方式:fille hello.o


目标文件中包含有:机器指令代码,数据。(先统称为“段”)

程序源代码编译后的机器指令放在:代码段(.code和.text)

已初始化的全局变量和局部静态变量都保存在.data中。

未初始化的全局变量和局部静态变量都保存在.bss中。【.bss段只是为未初始化的全局变量和局部静态变量预留位置,在文件中不占据位置】


先前说了分为指令代码和数据,问题来了,他们是分开存放的,为什么?

(1)数据区域对于进程来说是可读写的,对于指令区域是只读的,防止指令程序被有意无意的被改写。两个区域的内容被映射到不同的虚存空间,各种权限也不同。

(2)现代CPU,有着极大的缓存,程序为了提高缓存的命中率,分开有利于减少范围。

(3)基于现代多线程的广泛使用,比如某软件共享一组图片或信息,或者说共享指令(例IE浏览器,共享基本指令,私有数据)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值