i.MX6ULL 终结者开发板裸机使用手册 - 编译脚本详解

本手册详细解释了 i.MX6ULL 终结者开发板裸机编译脚本的每一行代码,帮助您理解编译过程和脚本语法。

代码解析:

  1. CROSS_COMPILE ?= arm-linux-gnueabihf-: 定义交叉编译器的前缀,如果用户没有定义,则使用 arm-linux-gnueabihf-
  2. NAME ?= led: 定义生成的可执行文件名称为 led,如果用户没有定义,则使用 led
  3. 空行
  4. CC := $(CROSS_COMPILE)gcc: 定义编译器为交叉编译器。
  5. LD := $(CROSS_COMPILE)ld: 定义链接器为交叉编译器的链接器。
  6. OBJCOPY := $(CROSS_COMPILE)objcopy: 定义目标文件复制工具为交叉编译器的目标文件复制工具。
  7. OBJDUMP := $(CROSS_COMPILE)objdump: 定义目标文件反汇编工具为交叉编译器的目标文件反汇编工具。
  8. 空行
  9. OBJS := start.o main.o: 定义需要生成可执行文件的目标文件。
  10. 空行
  11. $(NAME).bin:$(OBJS): 定义生成可执行文件的规则。
  12. $(LD) -Timx6ul.lds -o $(NAME).elf $^: 使用链接器将目标文件链接成可执行文件。
  13. $(OBJCOPY) -O binary -S $(NAME).elf $@: 将可执行文件转换成二进制文件。
  14. 空行
  15. %.o:%.s: 定义 .s 文件生成 .o 文件的规则。
  16. $(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将 .s 文件编译成 .o 文件。
  17. 空行
  18. %.o:%.S: 定义 .S 文件生成 .o 文件的规则。
  19. $(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将 .S 文件编译成 .o 文件。
  20. 空行
  21. %.o:%.c: 定义 .c 文件生成 .o 文件的规则。
  22. $(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将 .c 文件编译成 .o 文件。
  23. 空行
  24. clean: : 定义清理目标文件和可执行文件的规则。
  25. rm -rf *.o $(NAME).bin $(NAME).elf: 删除所有目标文件和可执行文件。

说明:

  • CROSS_COMPILE 用于指定交叉编译工具链的前缀,例如 arm-linux-gnueabihf-
  • NAME 用于定义最终生成的二进制文件的名字。
  • OBJS 定义了需要参与编译的目标文件列表,例如 start.omain.o
  • .s.S 表示汇编语言源文件,.c 表示 C 语言源文件。
  • -Wall 编译选项用于开启所有警告。
  • -nostdlib 编译选项表示不使用标准库。
  • -c 编译选项表示只进行编译,不链接。
  • -O2 编译选项表示开启优化级别为 2。
  • -o 编译选项用于指定输出文件名。
  • $^ 表示所有依赖文件,例如 start.omain.o
  • $@ 表示目标文件,例如 led.bin
  • rm -rf 用于删除文件和目录,-r 表示递归删除,-f 表示强制删除。

注意:

  • 编译脚本需要根据您的实际情况进行修改。
  • 请确保您的交叉编译工具链已经正确安装并配置。
  • 使用 make clean 命令可以清理编译过程中产生的所有文件。

更多信息:

  • 请参考 i.MX6ULL 终结者开发板的用户手册。
  • 请参考 make 命令的手册。
  • 请参考交叉编译工具链的文档。
i.MX6ULL 终结者开发板裸机使用手册 - 编译脚本详解

原文地址: https://www.cveoy.top/t/topic/oUvx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录