
链接装载与库
文章平均质量分 66
水乡夜航
嵌入式 Linux
展开
-
运行库和程序初始化
入口函数和函数初始化 程序在进入我们编写的入口之前,就已经初始化好了堆栈,外围IO,全局变量等。 这些工作都是函数库完成的,他们才是一个独立程序最开始执行的代码。 入口函数的实现(静态glibc+可执行文件) 首先我们要明白在PC指向E入口地址执行之前,是谁在handle这个ELF文件?应该是装载器(ld),装载器按照其ELF文件中的Program Header等信息将其相关的部分装载内存中,同时也会将用户的参数和环境变量压入栈中。有了这个背景知识,我们可以从Entry point address原创 2022-05-24 23:46:02 · 303 阅读 · 0 评论 -
可执行文件的装载和进程
可执行文件的装载和进程进程的创建创建独立的虚拟空间读取可执行文件头,创建虚拟空间和可执行文件映射关系如何理解可执行文件,虚拟空间,物理空间,VMA的关系设置CPU指令寄存器的入口地址 开始运行进程栈的初始化页错误进程的虚拟空间分布可执行文件的链接视图和执行视图堆和栈内核装载ELF过程参考文章 进程的创建 创建独立的虚拟空间 所谓的创建空间实际上不是真的在内存中申请相应的空间,而是创建代码虚拟空间到内存的物理空间页映射结构,实际上可能只是申请一个页目录,等到真正执行代码的时候,产生了缺页错误再去映射物理页,原创 2022-05-15 20:17:53 · 210 阅读 · 0 评论 -
静态链接的过程 --- 《程序员的自我修养读书总结》
静态链接的过程原创 2022-05-15 00:59:19 · 326 阅读 · 0 评论