PROVIDE
PROVIDE 关键字用于定义这类符号:在目标文件内被引用,但没有在任何目标文件汇总
被定义的符号,命令格式如下:
一个简单例子
目标文件内引用 _edata 符号,却没有定义它是,_edata 符号对应的地址被定义为
.text section 之后的第一个字节地址。
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 里面通过使用 PROVIDE 关键字导出一个
符号在目标源码里面使用:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂