设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> Linux >> Linux系统的可执行文件格式详细解析
精品推荐
Linux点击TOP10
·Linux命令Man解释:PPPD(8) :点对点daemon协议
·Linux 内核文件系统与设备操作流程分析
·Linux系统中如何正确安装摄像头驱动
·编译你自己的Linux内核
·Linux上五十个最佳的FireFox扩展插件
·Linux X-Window配置指南
·虚拟网络计算工具VNC使用指南
·Linux时区、时间的更改
·Webmin安装教程
·Linux系统下的动态DNS服务配置方法详解
操作系统点击TOP10
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·2000、XP、2003所有注册表设置
·FAT32转换NTFS的方法
·修改注册表优化XP技巧20招
·如何改变桌面等C盘文件的路径
·Linux命令Man解释:PPPD(8) :点对点daemon协议
·网吧操作系统制作与优化2007最终版
·Windows 2000,Windows XP,Windows 2003 系统重新封装参考资料
·Linux 内核文件系统与设备操作流程分析
·使用BCDEdit修改Windows Vista启动菜单
精选专题

Linux系统的可执行文件格式详细解析

作者: 来源: 时间:2007-12-5 17:23:08

可执行文件可以是具有不同格式的二进制文件,也可以是一个文本的脚本。可执行文件映像中包含了进程执行的代码和数据,同时也包含了操作系统用来将映像正确装入内存并执行的信息。在Linux中,当前的“本地”(系统默认的)可执行文件格式是ELF[15] (Executable and Linking Format)可执行链接格式。由于先前的a.out格式难于实现共享库,不能适用于动态链接,所以目前已经全部被ELF所替换。不过,Linux仍然为 a.out保留了一个二进制处理程序,但通常是使用ELF.
 
  Linux的加载程序一般是根据内嵌在可执行文件开头的“magic序列”(一个特殊字节序列)来识别文件,有时也会通过文件名的一些特性。例如,Java编译处理程序可以保证其文件名以。class结尾,并且文件起始前四个字节是 0xcafebabe,这是Java标准所定义的。下面是2.4版本内核在Intel体系下所提供的二进制处理程序,理论上,Linux灵活到足以处理几乎所有的目标文件格式。
 
  (1)a.out(在fs/binfmt_aout.c中):这是为了支持原来风格的Linux二进制文件。它的存在主要是为了满足一些系统的向后兼容的需要,但是基本上a.out已经光荣退役了。
 
  (2) ELF(在fs/binfmt_elf.c中):目前是Linux默认的二进制文件格式。该格式在可执行文件和共享库中都广泛使用。最新的Linux系统 (例如Red Hat 9)一般只预装了ELF二进制文件解释器,但是特殊情况下要决定加载a.out二进制文件,那么系统也通过模块的方式,对它提供支持。虽然ELF被作为惯用的Linux本地格式,但也和其它格式一样使用同一个加载处理程序。
 
  (3)EM86(在fs/binfmt_em86.c中):允许在Alpha机器上运行Intel的Linux二进制文件,仿佛它们就是Alpha的本地二进制文件。
 
  (4) Java(在fs/binfmt_java.c中):可以不必每次都定义Java字节码的解释程序就可以执行Java的。class文件。这种机制和脚本中使用的机制类似,通过把。class文件的文件名作为参数传递,处理程序返回执行整型字节码的解释程序。从用户的观点来看,Java二进制文件是作为本地可执行文件处理的。
 
  (5)misc(在fs/binfmt_misc.c中):这是最明智地使用二进制处理程序的方法,这个处理程序通过内嵌的特征数字或者文件名后缀可以识别出各种二进制格式,不过最优秀的特性是它可以在运行期配置,而不是只能在编译期配置。因此,只要遵循其规则,就可以快速的增加对新二进制文件的支持,而不用重新编译内核,也无须重新启动机器。Linux源程序文件中的注释建议最终使用它来取代Java和EM86二进制处理程序。
 
  (6)脚本(在fs/binfmt_script.c中):对于shell脚本、Perl脚本等提供支持。宽松一点地说,所有前面两个字符是“#!”的可执行文件,都归由这个二进制处理程序进行处理。
 
  这些Linux支持的二进制格式,可以在内核编译链接的时候直接建立在内核之中,也可以在内核运行的时候作为模块来加载。内核保存了支持的二进制格式解释程序的列表,当试图执行一个文件的时候,每一个二进制格式都会被依次尝试,直到判断出可识别的对应的二进制格式为止。


Linux系统的可执行文件格式详细解析 相关文章:
Linux系统的可执行文件格式详细解析 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com