将括号内的文件作为链接过程的输入文件。ld 首先在当前目录下寻找该文件,如果没有
找到,则在由 -L 指定的搜索路径下搜索。file 可以为 -lfile 形式,就像命令行的
-l 选项一样。如果该命令出现在暗含的脚本内,则该命令内的 file 在链接过程中的顺
序由该暗含的脚本在命令行内的顺序决定。
e.g. 三个源文件 DemoA.c,DemoB.c 和 DemoC.c,其中 DemoA.c 引用 DemoA.c 和
DemoB.c 里面的函数,使用 GCC 生成独立的目标文件 DemoA.o,DemoB.o 和 DemoC.o.
ld 使用链接脚本 Demo.lds, 并且在 Demo.lds 里面使用 INPUT 关键字指定了 DemoB.o
和 DemoC.o 为输入文件:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
链接成功之后生成 a.out 可执行文件,使用 objdump 工具查看 a.out 的 ELF 文件布局:
从上面的数据可知,在链接脚本中指定了 DemoB.o 和 DemoC.o 为输入文件之后,不用来
ld 命令中显示的指定目标文件,输出文件可以正确执行。因此 INPUT 关键字可以用于指
定链接的输入文件。
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂