fbpx
维基百科

a.out

a.out是旧版类Unix系统中用于执行档目的码和后来系统中的函式库的一种文件格式,这个名称的意思是汇编器输出

a.out
扩展名无, .o, .so
开发者AT&T
格式类型二进制文件执行档目的码函式库

尽管目前大多數类Unix系统都已改用ELF格式,不再采用a.out格式,但编译器链接器依然会在用户未指定文件名时,将输出文件取名为“a.out”。[1]

应用 编辑

在UNIX第一版中,就出现了给PDP-7PDP-11用的a.out格式。[2]之后它被UNIX System V中的COFF所取代,而COFF最后也被SVR4中的ELF格式所取代。

尽管BSD曾经沿用了一段时间的a.out格式,但较新的BSD系统都已切换到ELF。NetBSD/i386在1.5版中正式从a.out切换到ELF,FreeBSD/i386则是在2.2到3.0的转换中切换到ELF的。

a.out格式对调试信息的支持是由符号表中称作“stabs”的特殊项实现的。许多COFFELF变体中也用到了stabs格式。

Linux在1.2版内核之前也曾使用a.out格式(实验性的1.1.52版中加入了对ELF的支持),在此之后也被ELF取代了。 [3]Linux之所以转向ELF,或多或少是因为在此平台上构建一个a.out格式的函式库所需的复杂性过高:因为Linux中a.out的ld.so不能重定位共享函式库,所以需要一个中央机构来注册各个函式库的虚拟地址域。[4]一些BSD变体在Linux被迫转向ELF之后仍然用了很久的a.out格式,因为相比于Linux,BSD的a.out略微更灵活一些。[5]由于a.out格式的相关代码已经老旧并缺乏维护,而且已经几乎没有使用a.out格式的存在,5.1版内核决定移除相应的功能支持。[6]

MINIX 3仍将a.out作为二进制文件的格式,但其不支持共享函式库

格式 编辑

a.out执行档通常是以下几种变体之一:OMAGIC、NMAGIC、QMAGIC或ZMAGIC。

OMAGIC
OMAGIC格式在文件头后有连续段,没有文本和数据的分离。也被用作目标文件格式。
NMAGIC
NMAGIC格式与OMAGIC相像,但数据段出现在文本段结束后的下一页,且文本段被标为只读。
ZMAGIC
ZMAGIC格式加入了对按需分页的支持,代码段和数据段的长度需要是页宽的整数倍。
QMAGIC
QMAGIC二进制文件通常被加载在虚拟地址池的底端,用以通过段错误捕获对空指针的解引用。a.out头部与文本段的第一页合并,通常会省下一页的内存。
CMAGIC
旧版的Linux使用此格式来存放核心转储

a.out文件包含至多七节,顺序如下:

执行头部
包含内核将二进制文件加载入内存并执行所需的参数,也包含对动态链接器ld的指引。仅有本节是必须出现的。
文本段
包含运行时被载入内存的机器码和相关数据,可能是只读的。
数据段
包含已初始化的数据,总是可写的。
文本重定位
包含链接编辑器在合并二进制文件时修改文本段指针的记录。
数据重定位
与文本重定位一节类似,但是给数据段指针用的。
符号表
包含链接编辑器用于交叉引用不同二进制文件中变量和函式(符号)的记录。
字符串表
包含对应于符号表的字符串。

参见 编辑

参考资料 编辑

  1. ^ Rupert Wood. What to do with a.out. gcc-help (邮件列表). 2002-04-08 [2007-04-28]. (原始内容于2007-02-24). 
  2. ^ Dennis Ritchie. (PDF). Bell Labs. 1971-11-03 [2006-11-24]. (原始内容 (PDF)存档于2006-12-07). 
  3. ^ Daniel Barlow. . 14 July 1996 [2008-03-28]. (原始内容存档于2004-07-13). 
  4. ^ Ulrich Drepper. (PDF). 4.0. 2006-08-20 [2007-06-20]. (原始内容 (PDF)存档于2007-06-16). When introducing shared libraries certain design decisions had to be made to work in the limitations of a.out. (...) For all these reasons and more, Linux converted early on to using ELF (Executable Linkage Format) as the binary format.  |section=被忽略 (帮助)
  5. ^ BSD Myths: BSD uses the a.out executable format, which is outdated technology. [2007-04-10]. (原始内容于2007-04-17). 
  6. ^ Borislav Petkov. x86: Deprecate a.out support. 5 March 2019 [5 March 2019]. (原始内容于2020-09-19). Linux supports ELF binaries for ~25 years now. a.out coredumping has bitrotten quite significantly and would need some fixing to get it into shape again but considering how even the toolchains cannot create a.out executables in its default configuration, let's deprecate a.out support and remove it a couple of releases later, instead. 

外部链接 编辑

是旧版类unix系统中用于执行档, 目的码和后来系统中的函式库的一种文件格式, 这个名称的意思是汇编器输出, 扩展名无, 开发者at, t格式类型二进制文件, 执行档, 目的码, 函式库尽管目前大多數类unix系统都已改用elf格式, 不再采用格式, 但编译器和链接器依然会在用户未指定文件名时, 将输出文件取名为, 目录, 应用, 格式, 参见, 参考资料, 外部链接应用, 编辑在unix第一版中, 就出现了给pdp, 7和pdp, 11用的格式, 之后它被unix, system, v中的coff所取代, 而co. a out是旧版类Unix系统中用于执行档 目的码和后来系统中的函式库的一种文件格式 这个名称的意思是汇编器输出 a out扩展名无 tt o tt tt so tt 开发者AT amp T格式类型二进制文件 执行档 目的码 函式库尽管目前大多數类Unix系统都已改用ELF格式 不再采用a out格式 但编译器和链接器依然会在用户未指定文件名时 将输出文件取名为 a out 1 目录 1 应用 2 格式 3 参见 4 参考资料 5 外部链接应用 编辑在UNIX第一版中 就出现了给PDP 7和PDP 11用的a out格式 2 之后它被UNIX System V中的COFF所取代 而COFF最后也被SVR4中的ELF格式所取代 尽管BSD曾经沿用了一段时间的a out格式 但较新的BSD系统都已切换到ELF NetBSD i386在1 5版中正式从a out切换到ELF FreeBSD i386则是在2 2到3 0的转换中切换到ELF的 a out格式对调试信息的支持是由符号表中称作 stabs 的特殊项实现的 许多COFF和ELF变体中也用到了stabs格式 Linux在1 2版内核之前也曾使用a out格式 实验性的1 1 52版中加入了对ELF的支持 在此之后也被ELF取代了 3 Linux之所以转向ELF 或多或少是因为在此平台上构建一个a out格式的函式库所需的复杂性过高 因为Linux中a out的ld so不能重定位共享函式库 所以需要一个中央机构来注册各个函式库的虚拟地址域 4 一些BSD变体在Linux被迫转向ELF之后仍然用了很久的a out格式 因为相比于Linux BSD的a out略微更灵活一些 5 由于a out格式的相关代码已经老旧并缺乏维护 而且已经几乎没有使用a out格式的存在 5 1版内核决定移除相应的功能支持 6 MINIX 3仍将a out作为二进制文件的格式 但其不支持共享函式库 格式 编辑a out执行档通常是以下几种变体之一 OMAGIC NMAGIC QMAGIC或ZMAGIC OMAGIC OMAGIC格式在文件头后有连续段 没有文本和数据的分离 也被用作目标文件格式 NMAGIC NMAGIC格式与OMAGIC相像 但数据段出现在文本段结束后的下一页 且文本段被标为只读 ZMAGIC ZMAGIC格式加入了对按需分页的支持 代码段和数据段的长度需要是页宽的整数倍 QMAGIC QMAGIC二进制文件通常被加载在虚拟地址池的底端 用以通过段错误捕获对空指针的解引用 a out头部与文本段的第一页合并 通常会省下一页的内存 CMAGIC 旧版的Linux使用此格式来存放核心转储 a out文件包含至多七节 顺序如下 执行头部 包含内核将二进制文件加载入内存并执行所需的参数 也包含对动态链接器ld的指引 仅有本节是必须出现的 文本段 包含运行时被载入内存的机器码和相关数据 可能是只读的 数据段 包含已初始化的数据 总是可写的 文本重定位 包含链接编辑器在合并二进制文件时修改文本段指针的记录 数据重定位 与文本重定位一节类似 但是给数据段指针用的 符号表 包含链接编辑器用于交叉引用不同二进制文件中变量和函式 符号 的记录 字符串表 包含对应于符号表的字符串 参见 编辑Portable Executable ELF Vasm 一个自由的汇编器参考资料 编辑 Rupert Wood What to do with a out gcc help 邮件列表 2002 04 08 2007 04 28 原始内容存档于2007 02 24 Dennis Ritchie a out assembler and link editor output PDF Bell Labs 1971 11 03 2006 11 24 原始内容 PDF 存档于2006 12 07 Daniel Barlow The Linux ELF HOWTO v1 29 14 July 1996 2008 03 28 原始内容存档于2004 07 13 Ulrich Drepper How To Write Shared Libraries PDF 4 0 2006 08 20 2007 06 20 原始内容 PDF 存档于2007 06 16 When introducing shared libraries certain design decisions had to be made to work in the limitations of a out For all these reasons and more Linux converted early on to using ELF Executable Linkage Format as the binary format section 被忽略 帮助 BSD Myths BSD uses the a out executable format which is outdated technology 2007 04 10 原始内容存档于2007 04 17 Borislav Petkov x86 Deprecate a out support 5 March 2019 5 March 2019 原始内容存档于2020 09 19 Linux supports ELF binaries for 25 years now a out coredumping has bitrotten quite significantly and would need some fixing to get it into shape again but considering how even the toolchains cannot create a out executables in its default configuration let s deprecate a out support and remove it a couple of releases later instead 外部链接 编辑a out格式 a out格式的Unix手册页 取自 https zh wikipedia org w index php title A out amp oldid 64418185, 维基百科,wiki,书籍,书籍,图书馆,

文章

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