ARM程序工程Makefile 讲解及通用版例子编写

Makefile
==========================
如果需要编译多个.s或.c文件,最好通过Makefile对文件的编译、安装、删除等进行管理。

最简单的makefile如下:
$>vim Makefile
hello:hello.c
arm-linux-gcc -o hello hello.c
clean:
rm -f hello


(1)基本格式
-------------------------
目标(target) : 依赖(depedence)
命令(command)


(2)通用的Makefile
-------------------------
$>vim Makefile
src := $(shell ls *.c)
obj := $(patsubst %.c, %.o, $(src))

test: $(obj)
arm-linux-ld -o $@ $^
%.o: %.c
arm-linux-gcc -c -o $@ $<</div>
clean:
rm -f test $(elf)

上面的$@,$^以及$<为自动变量。
$@表示规则的目标文件名;
$^表示所有依赖的名字,名字之间用空格隔开;
$<表示第一个依赖的文件名
%为通配符,和一个字符串中任意个数的字符相匹配


(3)Makefile的例子
--------------------
如果当前要编译一个c文件mov.c和一个汇编文件mov_asm.s,Makefile的内容如下:
TARGET  := mymov
SRC_A   := $(shell ls *.s)
SRC_C   := $(shell ls *.c)
OBJ_A   := $(patsubst %.s, %.o, $(SRC_A))
OBJ_C   := $(patsubst %.c, %.o, $(SRC_C))

CROSS   := arm-linux-
CC              := $(CROSS)gcc
AS              := $(CROSS)as
CFLAGS  += -march=armv7-a -static

all: $(OBJ_A) $(OBJ_C)
        $(CC) $(CFLAGS) $^ -o $(TARGET)

%.o:%.s
        $(AS) $< -o $@
%.o:%.c
        $(CC) -c $< -o $@

install:
        adb remount
        adb push $(TARGET) /system/bin/

clean:
        rm -f $(OBJ_A) $(OBJ_C) $(TARGET)

测试:
$>make  //生成elf格式的程序mymov
$>make install  //将该程序安装到开发板上
$>make clean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值