定义三种输出文件的格式 (大小端)。若有命令行选项 -EB,则使用第 2 个 BFD 格式;
若有命令行选项 -EL,则使用第 3 个 BFD 格式,否则默认使用第一个 BFD 格式。
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 里面使用 OUTPUT_FORMAT 关键字指定了
输出文件的三种 BFD 格式:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
链接成功之后生成 a.out 可执行文件,使用 objdump 工具查看 a.out 的 ELF 文件布
局:
从上面的数据可知,可看到默认 file format 是 elf32-i386, 所以可以使用
OUTPUT_FORMAT 指令来指定输出文件的 BFD 格式。开发者也可以使用如下命令使用另外
两种 BFD 格式:
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂