自己写bootloader笔记7---Makefile分析
来源:互联网 发布:圣剑网络 奥特曼 编辑:程序博客网 时间:2024/05/22 12:07
CC = arm-linux-gcc
用于将多个目标文件、库文件链接成可执行文件
LD = arm-linux-ld
AR = arm-linux-ar
复制一个目标文件的内容到另一个文件
OBJCOPY = arm-linux-objcopy
显示 二进制文件信息,也可用于查看反汇编代码
OBJDUMP = arm-linux-objdump-Wall 表示打开所有需要注意的警告信息, -O2是优化选项,CFLAGS用于 C 预编译处理
CFLAGS := -Wall -O2
这里built-in表示编译器里面有自带的strcpy函数,而用户定义的strcpy函数跟其不一样,编译时加上-nostdlib -fno-builtin或者-nostdlib -fno-builtin-strcpy(指定某个函数),表示用用户定义的strcpy函数,而非编译器自带的strcpy函数
-nostdinc 不在标准系统目录中搜索头文件,只在-I指定的目录中搜索
-nostdinc++ 不在C++标准系统目录中搜索头文件,但在其他标准目录仍然搜索
CPPFLAGS := -nostdinc -nostdlib -fno-builtin
目标文件来源于 start.o init.o boot.o
objs := start.o init.o boot.o
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。
boot.bin: $(objs)
arm-linux-ld -Tboot.lds -o boot.elf $^
中-Tboot.lds中-T是指定链接脚本为boot.lds,-o指定链接成的可执行文件是boot.elf, $^表示start.o init.o boot.o
${LD} -Tboot.lds -o boot.elf $^
arm-linux-objcopy -O binary -S boot.elf $@
-O binary表示指定输出二进制文件,-S表示不从源文件中复制重定位信息和符号信息到目标文件中去。boot.elf 是elf格式的可执行文件, $@是目标文件,代表boot.bin
${OBJCOPY} -O binary -S boot.elf $@
arm-linux-objdump -D -m arm boot.elf > boot.dis,这里-D表示反汇编所有段,-m arm指定CPU架构为arm,将elf格式的文件 boot.elf转换为反汇编文件boot.dis
所有.o文件有同名的.c文件时执行下面的命令语句
%.o:%.c
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
所有.o文件有同名的.S文件时执行下面的命令语句
%.o:%.S
${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
在执行make clean命令时会调用到
clean:
rm -f *.o *.bin *.elf *.dis
- 自己写bootloader笔记7---Makefile分析
- 自己写bootloader笔记7---Makefile分析
- 自己写bootloader笔记1---流程分析
- 自己写bootloader笔记1---流程分析
- 自己写bootloader笔记2---start.S分析
- 自己写bootloader笔记3---init.c分析
- 自己写bootloader笔记4---uboot.lds分析
- 自己写bootloader笔记2---start.S分析
- 自己写bootloader笔记4---uboot.lds分析
- 自己写bootloader笔记3---init.c分析
- 自己写bootloader笔记5---设置u-boot传给内核的参数分析
- 自己写bootloader笔记8---反汇编文件boot.dis分析
- 自己写bootloader笔记9---读取内核内容分析看能否读取nand flash的内核
- 自己写bootloader笔记5---设置u-boot传给内核的参数分析
- 自己写 bootloader
- 自己写bootloader
- 自己写BootLoader
- 自己写 bootloader
- 合唱队-华为OJ
- java的框架和集合
- FFT模板
- Mac平台重新设置MySQL的root密码
- 40条Android开发优化建议
- 自己写bootloader笔记7---Makefile分析
- 使用LayoutInflate(视图扩充器)
- PsychoPy入门_02_按键等待&反应时
- 关于使用opencv的提速(二)(多线程问题,openMP)
- POJ2503 Babelfish 二分 TWT Tokyo Olympic 1 COMBO-1
- leetcode22. Generate Parentheses 栈和dfs的运用
- web图片
- Java网络编程(二)
- 自己写bootloader笔记6---boot.c分析(u-boot向内核传递参数及跳转到内核)