Linux 可执行文件格式与执行机制深度解析
1. 可执行文件格式
Linux 系统支持多种可执行文件格式,这些格式为系统的兼容性和灵活性提供了有力保障。
1.1 标准格式 - ELF
标准的 Linux 可执行文件格式是可执行与链接格式(ELF)。它由 Unix 系统实验室开发,如今在 Unix 世界中得到了最为广泛的应用。像 System V Release 4 和 Sun 的 Solaris 2 等知名的 Unix 操作系统,都将 ELF 作为其主要的可执行文件格式。
1.2 旧格式 - a.out
早期的 Linux 版本支持另一种格式——汇编输出格式(a.out)。实际上,这种格式在 Unix 世界中有多个版本。但如今它已很少被使用,因为 ELF 格式更加实用。
1.3 其他格式支持
Linux 还支持许多其他不同的可执行文件格式,这使得它能够运行为其他操作系统编译的程序,例如 MS - DOS 的 EXE 程序或 BSD Unix 的 COFF 可执行文件。还有一些可执行格式,如 Java 或 bash 脚本,是与平台无关的。
1.4 可执行格式的描述对象
可执行文件格式由linux_binfmt类型的对象描述,该对象主要提供三种方法:
-load_binary:通过读取可执行文件中存储的信息,为当前进程设置新的执行环境。
-load_shlib:将共享库动态绑定到已运行的进程,由uselib()