写在前面的话: 关于Makefile学习笔记系列的文章,是我正在学习的正点原子的阿尔法开发板的内容,所有例程源码均来自正点原子的例程,写这个文章的目的是为了学习Makefile。 Makefile代码摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南
Makefile代码
led.bin:led.s
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
arm-linux-gnueabihf-objdump -D led.elf > led.dis
clean:
rm -rf *.o led.bin led.elf led.dis
led.bin是目标文件 led.s是依赖文件
arm-linux-gnueabihf-gcc -g -c led.s -o led.o arm-linux-gnueabihf-gcc是交叉编译器 -g是产生调试信息 -c编译源文件但是不链接,即生成.o文件 -o指定编译后文件的名字
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf arm-linux-gnueabihf-ld用来将众多的.o文件链接到一个指定的链接位置。 -Ttext 0x87800000链接到这个地址上去
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin arm-linux-gnueabihf-objcopy格式转换工具 -O binary 指定二进制格式输出 -S 表示不复制源文件中的重定位信息和符号信息 -g 表示不复制源文件中的调试信息
arm-linux-gnueabihf-objdump -D led.elf > led.dis arm-linux-gnueabihf-objdump 反汇编工具 -D 表示反汇编所有段 led.dis 反汇编文件
clean:
rm -rf *.o led.bin led.elf led.dis
清理工程,但是目录下有一个名叫clean的文件时,使用make clean会出问题。可以将clean声明为伪目标,声明方式:
.PHONY:clean
|