最近在学习《MIT6.828》,因此顺便简单学习一下ld脚本。主要参考gnu的官方文档,对其用法做一个简单的概括。LD,同时参考了一些网上的资料,
ld - 链接脚本学习笔记与实践过程。
本文的布局以及内容基本按照LD进行描述,强烈建议读者自行阅读官方文档LD。
链接脚本概述
当链接器将可重定位文件通过重定位等操作生成可执行程序的时候,链接脚本可以控制输入文件中的各个段在生成文件中的位置,并且可以规定生成的可执行文件加载入内存之后的空间布局。
链接器ld
默认使用其内部的连接脚本,因此在一般情况下,我们都不需要对其进行修改。在使用ld
的时候,通过-T
选项,可以使用自己写的链接脚本完成链接过程,否则会使用默认的链接脚本。
一些基本概念
ELF
文件是由一些section
组成的,最重要的是3个:.text
段,即代码段,保存着运行时的指令的二进制代码;.data
段,即数据段,保存着已经初始化的全局变量