makefile初步
来源:互联网 发布:中医体质软件 编辑:程序博客网 时间:2024/06/05 16:48
声明
以下为个人学习笔记,各方面的理解还不够深,欢迎各位指正。
程序出处
朱老师物联网课程 - 裸机-led
首先是我的源码目录列表
Makefile //用于编译的脚本
mkv210_image//sd卡启动时,编译出来镜像文件需要添加校验头
start.S //源码
主要分析对象
Makefile的内容
led.bin: start.o arm-linux-ld -Ttext 0x0 -o led.elf $^ arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led_elf.dis gcc mkv210_image.c -o mkx210 ./mkx210 led.bin 210.bin%.o : %.S arm-linux-gcc -o $@ $< -c clean: rm *.o *.elf *.bin *.dis mkx210 -f
- 终端输入 make led.bin
系统会去寻找 led.bin 这个标签,然后作为程序入口,我把它类比成switch case语句。 然后看到 led.bin: start.o这个语句,你肯定好奇,这个start.o 是什么,哪里来的。 如果将makefie的过程看做做菜,那么这个冒号后面的就是你需要的食材。那么我们首先要凑齐他们,start.o并没有在我们的源文件列表中,makefile也发现了这个问题,既然源文件中没有,那么久 看看自己有没有办法制造出来吧。
然后它把shart.o 当成了一个新目标去执行,类似于执行了 一个 make start.o。这时候他遇到了
%.o : %.S arm-linux-gcc -o $@ $< -c
%.o 这个%是个百搭,start.o 也就匹配了这一行,实际执行情况就是:
start.o : start.S arm-linux-gcc -o $@ $< -c
start.o这个材料需要用到 start.S,这个文件我们正好有。arm-linux-gcc 交叉编译工具(需要事先在系统上进行安装)-o 指定输出文件名 $@ 这里指的是 start.o 目标$< 这里指的是 start.S 原料-c 指明:本次操作只编译不链接(至于什么是链接,后面博客再进行补充)这行执行完,会生成一个start.o文件。 好了,这样我们的原料 start.o 就有了。
- 凑齐了原料,系统就回到我们的最终目标处执行
led.bin: start.o arm-linux-ld -Ttext 0x0 -o led.elf $^ arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led_elf.dis gcc mkv210_image.c -o mkx210 ./mkx210 led.bin 210.bin
逐行解释
arm-linux-ld -Ttext 0x0 -o led.elf $^ 对start.o进行链接,并且链接地址是0x00 详解: arm-linux-ld 交叉工具链(用于链接) -Ttext 0x0 指定链接地址为0x00 -o led.elf 生成文件 led.elf $^ 这里指 start.o arm-linux-objcopy -O binary led.elf led.bin arm-linux-objcopy 交叉工具链(复制)可指定复制后文件的格式 -O binary (猜测)指定目标文件格式 led.elf led.bin 将led.elf 复制 保存成 led.bin arm-linux-objdump -D led.elf > led_elf.dis 将led.elf可执行文件,反汇编到led_elf.dis -D 反汇编所有段(段和链接的知识以后总结) gcc mkv210_image.c -o mkx210 编译mkv210_image.c生成可执行文件mkx210(这是在linux下的可执行文件) ./mkx210 led.bin 210.bin 带参数的程序,具体实现效果由mkx210决定。
- make clean
编译过程结束。生成了led.bin以及一些附带文件。
还剩下一段没有被执行过的
clean: rm *.o *.elf *.bin *.dis mkx210 -f
输入make clean就会执行rm *.o *.elf *.bin *.dis mkx210 -f按条件删除文件。
记性不好,仔细写写笔记还是挺有意思。
0 0
- makefile初步
- makefile 初步
- Makefile初步
- makefile初步
- Makefile使用初步
- [转载]Makefile使用初步
- Makefile使用初步
- Makefile使用初步
- Makefile使用初步
- Makefile初步使用
- gdb和makefile初步
- Makefile初步理解
- makefile 初步学习与使用
- 8.makefile初步编程学习
- Makefile初步(打桩先,晚上完善)
- Linux C编程Makefile编写初步
- Linux C编程Makefile编写初步-转
- 对于makefile的初步的理解
- c++继承
- Mysql集群的HA原理及配置指南之主备模式(一)
- ListView中CheckBox和EditText重用问题解决方法
- 链式前向星
- PHP是世界上最好的语言
- makefile初步
- 数组概念和案例
- SQLHelper--四种方法完整版
- 你会买新款 MACBOOK PRO 么?
- 解决maven创建项目报错问题
- 第11天 类的继承
- mongoDB学习笔记1
- poj3268 Silver Cow Party (dijkstra)
- 极限学习机(ELM) 算法及MATLAB程序实现