GROUP
指定需要重复搜索符号定义的多个输入文件。file 必须是库文件,且 file 文件作为一
组被 ld 重复扫描,直到不在有新的未定义的引用出现。
e.g. 三个源文件 DemoA.c,DemoC.c 和 DemoB.c,其中 DemoB.c 引用 DemoA.c 和
DemoC.c 里面的函数,使用 GCC 生成独立的目标文件 DemoB.o,然后将 DemoA.c 和
DemoC.c 生成动态库 libDemoA.so 和 libDemoC.so。 ld 使用链接脚本 Demo.lds, 并且
在 Demo.lds 里面使用 GROUP 关键字扫描 libDemoA.so 和 libDemoC.so:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
链接成功之后生成 a.out 可执行文件,使用 objdump 工具查看 a.out 的 ELF 文件布局:
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂