一份Makefile的详解

指定编译器为arm-linux-gcc,链接器为arm-linux-ld,用arm-linux-objcopy 来将ELF格式的可执行文件转换为二进制文件.

CC = arm-linux-gcc
LD = arm-linux-ld
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump

指定库文件,”-l” 用来链接放在/lib和/usr/lib和/usr/local/lib里的库,”-L” 用来链接放置在其他位置的库

LIB :=-lgcc -lgcc_eh -L/usr/local/arm/lib/gcc/arm-none-linux-gnueabi/4.5.1

指定头文件位置

INCLUDEDIR := $(shell pwd)/include/

C语言编译选项: -nostdinc 不要在标准系统目录中寻找头文件.只搜索`-I’选项指定的目录(以及当前目录,如果合适).

CPPFLAGS := -nostdinc -nostdlib -I$(INCLUDEDIR)

C语言编译选项,不使用C语言内建函数、显示全部警告、优化等级为0

CFLAGS := -fno-builtin -Wall -O0

用export声明这些变量使得他们可以被子目录的Makefile使用

export CC LD OBJCOPY CPPFLAGS CFLAGS

对象文件

OBJS := cpu/start.o cpu/main.o lib/uart.o lib/libc.a

目标:依赖文件列表

all:start.bin clean

start.bin:(OBJS)  
    #设置代码段的起始地址为0x40000000 链接生成start.elf文件,
(LD) -Ttext=0x40000000 (OBJS)ostart.elf (LIB)
(OBJCOPY)ObinarySstart.elf @
#将start.elf文件反汇编成start.dis
$(OBJDUMP) -D start.elf > start.dis

%.o:%.S
(CC)c (CPPFLAGS) (CFLAGS) < -o @ (CC) -c (CPPFLAGS) (CFLAGS) <o <script type="math/tex" id="MathJax-Element-8">< -o </script>@
clean:

-C 选项的作用是指将当前工作目录转移到你所指定的位置(即cpu),即执行cpu目录下的Makefile中的clean

make clean -C cpu 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值