i.MX6ULL 终结者开发板裸机使用手册 - 编译脚本详解
i.MX6ULL 终结者开发板裸机使用手册 - 编译脚本详解
本手册详细解释了 i.MX6ULL 终结者开发板裸机编译脚本的每一行代码,帮助您理解编译过程和脚本语法。
代码解析:
CROSS_COMPILE ?= arm-linux-gnueabihf-: 定义交叉编译器的前缀,如果用户没有定义,则使用arm-linux-gnueabihf-。NAME ?= led: 定义生成的可执行文件名称为led,如果用户没有定义,则使用led。- 空行
CC := $(CROSS_COMPILE)gcc: 定义编译器为交叉编译器。LD := $(CROSS_COMPILE)ld: 定义链接器为交叉编译器的链接器。OBJCOPY := $(CROSS_COMPILE)objcopy: 定义目标文件复制工具为交叉编译器的目标文件复制工具。OBJDUMP := $(CROSS_COMPILE)objdump: 定义目标文件反汇编工具为交叉编译器的目标文件反汇编工具。- 空行
OBJS := start.o main.o: 定义需要生成可执行文件的目标文件。- 空行
$(NAME).bin:$(OBJS): 定义生成可执行文件的规则。$(LD) -Timx6ul.lds -o $(NAME).elf $^: 使用链接器将目标文件链接成可执行文件。$(OBJCOPY) -O binary -S $(NAME).elf $@: 将可执行文件转换成二进制文件。- 空行
%.o:%.s: 定义.s文件生成.o文件的规则。$(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将.s文件编译成.o文件。- 空行
%.o:%.S: 定义.S文件生成.o文件的规则。$(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将.S文件编译成.o文件。- 空行
%.o:%.c: 定义.c文件生成.o文件的规则。$(CC) -Wall -nostdlib -c -O2 -o $@ $<: 使用编译器将.c文件编译成.o文件。- 空行
clean:: 定义清理目标文件和可执行文件的规则。rm -rf *.o $(NAME).bin $(NAME).elf: 删除所有目标文件和可执行文件。
说明:
CROSS_COMPILE用于指定交叉编译工具链的前缀,例如arm-linux-gnueabihf-。NAME用于定义最终生成的二进制文件的名字。OBJS定义了需要参与编译的目标文件列表,例如start.o和main.o。.s和.S表示汇编语言源文件,.c表示 C 语言源文件。-Wall编译选项用于开启所有警告。-nostdlib编译选项表示不使用标准库。-c编译选项表示只进行编译,不链接。-O2编译选项表示开启优化级别为 2。-o编译选项用于指定输出文件名。$^表示所有依赖文件,例如start.o和main.o。$@表示目标文件,例如led.bin。rm -rf用于删除文件和目录,-r表示递归删除,-f表示强制删除。
注意:
- 编译脚本需要根据您的实际情况进行修改。
- 请确保您的交叉编译工具链已经正确安装并配置。
- 使用
make clean命令可以清理编译过程中产生的所有文件。
更多信息:
- 请参考 i.MX6ULL 终结者开发板的用户手册。
- 请参考
make命令的手册。 - 请参考交叉编译工具链的文档。
原文地址: https://www.cveoy.top/t/topic/oUvx 著作权归作者所有。请勿转载和采集!