INCLUDE
包含其他名为 filename 的链接脚本。脚本搜索路径由 -L 选项指定,INCLUDE 指令可以
嵌套使用,最大深度为 10.
e.g. 三个源文件 DemoA.c,DemoB.c 和 DemoC.c,其中 DemoA.c 引用 DemoA.c 和
DemoB.c 里面的函数,使用 GCC 生成独立的目标文件 DemoA.o,DemoB.o 和 DemoC.o。
ld 使用链接脚本 Demo.lds 和 DemoE.lds, 并且在 Demo.lds 里面使用 INCLUDE 关键字
包含了 DemoE.lds 链接脚本:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
链接成功之后生成 a.out 可执行文件,使用 objdump 工具查看 a.out 的 ELF 文件布
局:
从上面的数据可知,所有的段都按着链接脚本内容进行链接,Demotext 段包含了所有目
标文件的 .text, .data 和 .rodata 段。链接脚本中 INCLUDE 关键字包含其他链接脚本
可以正常链接。
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂