可执行与可链接格式 编辑
可执行与可链接格式 ,常被称为 ELF格式,在计算中,是一种用于可执行文件、目标代码共享库核心转储的标准文件格式。首次发布于一个名为 System V Release 4的 UNIX 操作系统版本中关于应用二进制接口的规范中,并且此后不久发布于工具接口标准,随后很快被不同 UNIX 发行商所接受。1999 年,这种格式被 86open 项目选为 x86 架构处理器上的 Unix 和 类Unix系统 系统的标准二进制文件格式。
2
相关
弱符号是链接器在生成可执行与可链接格式的过程中使用的一种特殊属性符号。默认情况下,如果没有特别声明,目标文件里面的符号都是强符号。在链接过程中,一个强符号会优先于一个同名的弱符号。相比之下,两个同名强符号一起链接会出现链接错误。当链接一个可执行文件,弱符号可以不定义。但对于强符号,如果没有定义,连接器会产生一个“符号未定义”错误 。使用弱符号的目的是,当不确定这个符号是否被定义的情况下,链接器也可以成功链接出ELF文件,适用于某些模块还未实现的情况下,其他模块的先行调试。 弱符号在C语言和C++语言的规范里面没有被提及,所以使用弱符号的代码,移植性不是非常好。
readelf是在类Unix系统上显示关于目标文件的各种信息的程序。如其名字所示,它读取可执行与可链接格式格式的目标文件。它与Objdump一起都是GNU Binutils的一部分。
kdump是Linux内核的一个功能,可在发生内核错误时创建核心转储。当被触发时,kdump会导出一个内存映像,该映像可用于调试和确定崩溃的原因。 主内存的转储映像作为可执行与可链接格式对象导出,可以在处理内核崩溃时通过/proc/vmcore直接访问,也可以自动保存到本地可访问的文件系统、 裸设备或通过计算机网络访问的远程系统。
在软件工程中,gold是可执行与可链接格式档案的链接器。其在2008年3月成为官方GNU软件包列表并被加入至GNU Binutils中,第一次释出是在binutils 2.19中。gold是由Ian Lance Taylor与Google的一个小团队开发的。编写gold的动机是要制作一个比GNU连结器更快的连结器,特别是对于使用C++编写的大型应用程序。