所以我们知道linker
(在我的情况下ld
)Program Headers
在Relocatable file
创建实际的Executable
.
然后这些标头用于在运行时将程序加载到内存中。
首先如何
ld
计算这些头文件并将其添加到文件中?然后如果
Program Headers
仅用于将程序加载到内存中(如果我错了,请纠正我),为什么不同的可执行文件有不同的数量Program Headers
?
例如,用汇编语言编写的简单 helloworld 有2 个程序头:
readelf -h helloworld
...
Number of program headers: 2
...
但是bash
有11 个程序头:
readelf -h /bin/bash
...
Number of program headers: 11
...