这个问题是编译器如何在内存中布局代码 的延续,该问题 发布在堆栈溢出中。
ld
关于Linux 中可用的 (GNU) 实用程序,我几乎没有问题。
每当一个程序在 shell 中运行时,比如说./a.out
,shell 都会使用ld
来加载由 代表的程序a.out
。
shell 怎么知道它必须
ld
用来加载a.out
. 它是否扫描a.out
以检查它是否为 ELF 格式,如果是,则使用ld
?它当然不能使用文件扩展名,因为没有以某种格式命名可执行文件的规则。实用程序可以
ld
加载以除 ELF 之外的任何其他可执行格式表示的程序吗?假设我想出了自己的可执行格式,比如“xyz”,然后我编写了自己的加载程序
abc
来处理这些可执行文件。那么,是否有任何shell命令可以配置:“使用加载程序加载abc
以特定可执行格式“xyz”编译的程序?