CREATE_OBJECT_SYMBOLS
为每个输入文件建立一个符号,符号名为输入文件的名字。每个符号所在的 section 是
出现该关键字的 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 里面通过 CREATE_OBJECT_SYMBOLS 关键
字,在 DemoData 段内定义一个 _edata 的符号:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
通过上面的运行数据可知,在输出文件中,_edata 已经被导出称为一个符号。
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂