帮助中心 广告联系

灵宝信息网-灵宝天气预报-灵宝教育网-灵宝租房-灵宝新闻网-灵宝生活网

热门关键词:

Mach-O

来源:原创/投稿/转载 发布时间:2019-10-23

  声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。详情

  bject文件格式的缩写,它是一种用于可执行文件目标代码动态库,内核转储的文件格式。作为a.out格式的替代,Mach-O提供了更强的扩展性,并提升了符号表中信息的访问速度。

  Mach-O曾经为大部分基于Mach核心的操作系统所使用。NeXTSTEPDarwinMac OS X等系统使用这种格式作为其原生可执行文件,库和目标代码的格式。而同样使用GNU Mach作为其微内核的GNU Hurd系统则使用ELF而非Mach-O作为其标准的二进制文件格式。

  每个Mach-O文件包括一个Mach-O头,然后是一系列的载入命令,再是一个或多个

  。Mach-O使用REL再定位格式控制对符号的引用。Mach-O在两级命名空间中将每个符号编码成“对象-符号名”对,在查找符号时则采用线性搜索法。

  Mach-O的基本结构,引用了文件中数据页的变长“加载命令”表,也用于Accent核心的可执行文件格式中,而这种格式则是基于来自Spice Lisp的理念。

  在NeXTSTEPOPENSTEPMac OS X中,可以将多个Mach-O文件组合进一个多重架构二进制文件中,以用一个单独的二进制文件支持多种架构的指令集。例如,一个Mac OS X中的多重架构二进制可以包含32位64位PowerPC代码,或PowerPC和x86的32位代码,甚至包含32位的PowerPC代码,64位PowerPC代码,32位x86代码和64位x86代码。

  由于Darwin 10.0(对应Mac OS X 10.6)中对Mach-O文件的结构定义进行了一些重要的修改,因此在Mac OS X 10.6中以默认选项编译的二进制只能在10.6平台中运行。其差异之一在于Mac OS X的连接器(dyld)产生的载入命令无法为早期版本的Mac OS X所理解。另外一个重要改变是Link Edit表(__LINKEDIT段)的作用。在10.6中,新的Link Edit表中的无用信息会被去除,从而起到压缩的作用,而Mac OS X 10.5及以前的版本无法识别这种新格式。为解决这个问题,在连接时常常需要使用-mmacosx-version-min=连接器标志。苹果公司作为Mach-O格式的维护者,推荐开发者在创建二进制应用程序的时候与使用与所用的SDK版本对应的该标志。

  Biv R G, Virus M M. Infecting Mach-O Files[J]. 2006.

责任编辑:admin

本网转载作品的目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如涉及作品内容、版权等问题,请联系我们进行修改或删除!

联系我们 -