深入理解Linux可执行程序

深入了解构建和解析Linux可执行程序。
在从源文件生成可执行程序的过程中,收件人必须经历一系列主要步骤。
首先,源文件经过编译器处理生成可重定位目标文件(.o文件),然后通过链接器将多个.o文件合并为一个可执行文件。
.o文件本质上是ELF文件的一种形式,包含二进制代码和数据,并且能够与其他目标文件合并以创建可执行目标文件。
由于.o文件也是一个ELF文件,我们可以通过readelf-h命令查看其ELF头数据。
通过使用ELF头结构对比,我们可以更深入地了解文件结构。
首先,我们需要记住幻数,它们的大小受到宏定义“#defineEI_NIDENT(16)”的限制。
这些数字位于ELF文件头的16个字节中,每个字节都有自己特定的含义。
使用‘readelf-s’命令,我们可以根据地址偏移量大致了解可重定位文件的结构。
接下来,我们将相同的源代码编译成可执行程序,并使用readelf-h查看可执行文件的头信息。
通过readelf-s,我们可以进一步了解可执行文件的段结构。
对比可重定位文件和可执行文件的头信息,我们可以发现以下主要区别。
我们喜欢“readelf”人们可以通过官方工具获取有关可执行程序结构的信息,但这是否意味着真正的可执行程序实际上遵循这种模式?为了验证这一点,我们可以解析ELF文件并了解其结构。
这个过程可能基于“readelf”提供的信息,或者直接从实际存在的ELF文件解析。
为了验证ELF文件的头信息,我们需要计算整个可执行文件的大小。
根据文件头信息,我们知道ELF头大小为64字节,段头表偏移地址为64字节,大小为56字节,段头数量为13,节头表偏移地址为36184字节;,大小为64字节,节头数量为36。
有了这些信息,我们就可以进一步验证ELF文件的创建。
在验证过程中,我们关注ELF头、段头和节头表的正确位置和大小。
通过计算,我们确认ELF头位于文件顶部,节头紧随其后,节头表位于文件末尾,符合预期。
对于Linux系统中的可执行程序,位置无关可执行(PIE)标志的引入可以使程序在共享库和传统可执行程序之间跨越。
PIE允许将程序加载到内存中的任何位置,而不需要固定地址。
在编译期间添加“-py”或“-no-py”选项会更改程序的加载行为。
可以受到影响,从而提高系统的安全性。
总之,深入了解Linux可执行程序的创建和解析过程,有助于我们理解程序的底层机制。
通过使用readelf等官方工具以及对ELF文件结构的分析,我们可以详细分析可执行程序的结构,进而了解其在系统中的运行机制和安全策略。

高手们,Linux中,make以后生成的可执行程序,makeinstall后是安装到哪里去的

不同的程序安装在不同的路径中。
这取决于配置文件。
构建之前,可以像这样指定安装路径:/configure--prefix=/usr/local/apache/。