ld -verbose
在使用链接器的时候,没有指定脚本会使用默认脚本,通过该命令查看
通过 T 参数可以指定该脚本为链接器控制脚本
ld -T link.script
输入文件中的段称为输入段(Input Sections),输出文件中的段称为输出段(Output Sections)。控制链接过程无非是控制输入段如何变成输出段
一般链接脚本名都以 lds
作为扩展名
分为命令语句和赋值语句两种
ENTRY(symbol)
命令指定了程序的入口STARTUP(filename)
将文件作为链接过程中的第一个输入文件 → 链接顺序INPUT(file,...)
设定输入文件SEARCH_DIR(path)
将路径 path 加入库查找目录INCLUDE filename
将指定文件复制进来,相当于 C 中的 includePEOVIDE(symbol)
在链接脚本中定义某个符号- 最复杂的命令:
SECTIONS
指定各种输入段的变换,其中:
. = <address>
是赋值语句,设定当前虚拟地址(空格注意,下同)
<section> : {contents ...}
是段转化规则,即合并右侧输入段到左侧的输出段
/DISCARD/ : {contents}
是将所有满足条件的段丢弃,不保存在输出文件中
contents 规则:filename(sections)
。section 若不写则表示该文件所有段符合条件,filename 用 * 表示通配,同理可以用正则表达式中的 ? []
规则