Linux中ELF格式 可执行文件+动态链接器 的加载
兩種加載方式
(1)加載可執(zhí)行文件,通過PT_INTERP加載動態(tài)鏈接器
(2)直接加載動態(tài)鏈接器,再由其加載可執(zhí)行文件
On a typical ELF system such as Linux, the kernel is normally responsible for loading both the executable and the dynamic linker. The executable is invoked by filename with execve(). The kernel loads the executable into the process, and looks for a PT_INTERP entry in its ELF Program Headers; this specifies the filename of the dynamic linker (/lib/ld-linux.so.2 for glibc on Linux). If there is a PT_INTERP entry, the kernel loads this file too.
Either of these two ELF objects can be relocatable (ET_DYN) or require loading at a fixed position in address space (ET_EXEC). Most often, the dynamic linker is relocatable and the executable is fixed-position with a standard base address (0x08048000 on i386). Sometimes the executable is relocatable too (these are known as PIEs - position-independent executables). For relocatable objects, the kernel chooses the load address.
There is another way to load the two ELF objects: the dynamic linker can be invoked directly with execve(). If passed the filename of an executable, the dynamic linker will load the executable itself.
總結
以上是生活随笔為你收集整理的Linux中ELF格式 可执行文件+动态链接器 的加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DLL Hell
- 下一篇: 所有JavaScript变量/对象都可以