Content #
动态链接器的位置既不是由系统配置指定,也不是由环境参数决定,而是由ELF 可执行文件决定。
在动态链接的ELF可执行文件中,有一个专门的段叫做“.interp”段(“interp”是“interpreter”(解释器)的缩写)。如果我们使用objdump工具来查看,可以看到“.interp”内容:
$ objdump -s a.out
a.out: file format elf32-i386
Contents of section .interp:
8048114 2f6c6962 2f6c642d 6c696e75 782e736f /lib/ld-linux.so
8048124 2e3200 .2.
“.interp”的内容很简单,里面保存的就是一个字符串,这个字符串就是可执行文件所需要的动态链接器的路径,在Linux下,可执行文件所需要的动态链接器的路径几乎都是“/lib/ld-linux.so.2”,其他的*nix操作系统可能会有不同的路径。在Linux的系统中,/lib/ld-linux.so.2通常是一个软链接,比如它可能指向/lib/ld-2.6.1.so,这个才是真正的动态链接器。
From #
程序员的自我修养