makefile 文件
makefile文件*********************************/
/*******************************************************
makefile文件
Makefile:编译脚本:编写命令集中在一块,用make来执行
脚本是源程序状态
*******************************************************/
/*******************************************************
objs:定义的变量
start.o:相当于start.s、leds.o相当于leds.s
start.o和leds.o是内容,代表两个文件名
*******************************************************/
objs := start.o leds.o
/********************************************************
生成最终机器代码(.bin文件就是机器代码)
arm-linux-ld:链接器(目标程序变链接器)
-T 表示链接
leds.elf 可直接执行,不能直接烧写
********************************************************/
leds.bin : $(objs)
arm-linux-ld -Tleds.lds -N -o leds.elf $^
arm-linux-objcopy -O binary -S leds.elf $@
arm-linux-objdump -D -m arm leds.elf > leds.dis
/********************************************************
对.c文件起作用
把.c程序编译成目标程序
********************************************************/
%.o:%.c
arm-linux-gcc -Wall -marm -c -O2 -o $@ $<
/********************************************************
%.o表示输出;%.s表示输入
% 表示通配符:代表任意字符
.s 表示凡是汇编写的都是.s
arm-linux-gcc 表示汇编器(源程序变目标程序)
-wall 全编译
-marm 宏编译
-c 进行汇编
-02 汇编时进行2级优化
-o 输出的文件是谁
$@ 代表%.o 跟-o相结合
s< 代表%.s 依赖文件
**********************************************************/
%.o:%.S
arm-linux-gcc -Wall -marm -c -O2 -o $@ $<
/**********************************************************
清除命令
在Linux中输入:make clean 可清除
/
clean:
rm -f .dis .bin .elf .o
/*********************************************************************************************/
/.lds文件******************************/
SECTIONS {
. = 0x02023400;
.text : { (.text) }
//只读数据段
.rodata ALIGN(4) : {(.rodata*)}
//数据段
.data ALIGN(4) : { (.data) }