【发布时间】:2018-04-10 05:24:12
【问题描述】:
通过在android系统中读取一个二进制文件的ELF头,我发现/system/bin下的可执行文件大部分都是ET_DYN,即共享库。例如,/system/bin/ls, lsmod, kill 文件的类型为 ET_DYN。在我看来,这些文件是可执行的,并且应该是ET_EXEC 类型。所以我的问题是:在android系统中,为什么Linux操作系统的可执行文件被编译成ET_DYN类型?
【问题讨论】:
通过在android系统中读取一个二进制文件的ELF头,我发现/system/bin下的可执行文件大部分都是ET_DYN,即共享库。例如,/system/bin/ls, lsmod, kill 文件的类型为 ET_DYN。在我看来,这些文件是可执行的,并且应该是ET_EXEC 类型。所以我的问题是:在android系统中,为什么Linux操作系统的可执行文件被编译成ET_DYN类型?
【问题讨论】:
即共享库
它们不是:它们是与位置无关的可执行文件。
【讨论】:
PIE 可执行文件没有)。