fbpx
维基百科

Mach-O

Mach-OMach Object文件格式的缩写,它是一种用于可執行檔目标代码動態函式庫内核转储的檔案格式。作为a.out格式的替代者,Mach-O提供了更强的扩展性,并提升了符号表中資訊的访问速度。

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

Mach-O文件结构 编辑

每个Mach-O檔案包括一个Mach-O头,然后是一系列的载入命令,再是一个或多个區塊,每个块包括0到255个。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(AMD64)。

Mach-O的未来 编辑

由于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版本标志。

参见 编辑

外部链接 编辑

mach, 为mach, object文件格式的缩写, 它是一种用于可執行檔, 目标代码, 動態函式庫, 内核转储的檔案格式, 作为a, out格式的替代者, 提供了更强的扩展性, 并提升了符号表中資訊的访问速度, 扩展名无, dylib, 统一类型标识com, apple, mach, binary开发者卡内基梅隆大学, 蘋果公司格式类型二进制文件, 可执行文件, 目标代码, 動態函式庫, 内核转储作为容器arm, sparc, risc, powerpc以及x86的可执行文件, 内存转储曾经为大部分基于mach. Mach O为Mach Object文件格式的缩写 它是一种用于可執行檔 目标代码 動態函式庫 内核转储的檔案格式 作为a out格式的替代者 Mach O提供了更强的扩展性 并提升了符号表中資訊的访问速度 Mach O扩展名无 tt o tt tt dylib tt 统一类型标识com apple mach o binary开发者卡内基梅隆大学 蘋果公司格式类型二进制文件 可执行文件 目标代码 動態函式庫 内核转储作为容器ARM SPARC PA RISC PowerPC以及x86的可执行文件 内存转储Mach O曾经为大部分基于Mach核心的作業系統所使用 NeXTSTEP Darwin和Mac OS X等系统使用这种格式作为其原生可執行檔 库和目标代码的格式 而同样使用GNU Mach作为其微内核的GNU Hurd系统则使用ELF而非Mach O作为其标准的二进制檔案格式 目录 1 Mach O文件结构 2 多重架构二进制 3 Mach O的未来 4 参见 5 外部链接Mach O文件结构 编辑每个Mach O檔案包括一个Mach O头 然后是一系列的载入命令 再是一个或多个區塊 每个块包括0到255个段 Mach O使用REL再定位格式控制对符号的引用 Mach O在两级命名空间中将每个符号编码成 对象 符号名 对 在查找符号时则采用线性搜索法 Mach O的基本结构 引用了檔案中数据页的变长 載入指令 表 也用于Accent核心的可执行檔格式中 而这种格式则是基于来自Spice Lisp的理念 多重架构二进制 编辑在NeXTSTEP OPENSTEP和Mac OS X中 可以将多个Mach O檔案组合进一个多重架构二进制檔案中 以用一个单独的二进制檔案支持多种架构的指令集 例如 一个Mac OS X中的多重架构二进制可以包含32位元和64位元的PowerPC程式碼 或PowerPC和x86的32位元程式碼 甚至包含32位元的PowerPC程式碼 64位元PowerPC程式碼 32位元x86程式碼和64位元x86 AMD64 Mach O的未来 编辑由于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版本标志 参见 编辑胖二进制 通用二进制 Xcode外部链接 编辑Mach O File Format Reference Apple Inc Mach Object Files Mach O Dynamic Library Reference 页面存档备份 存于互联网档案馆 Mach O Manual Page 页面存档备份 存于互联网档案馆 Mach O Viewer 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Mach O amp oldid 78952508, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。