热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

arm与gcc

来源: 作者: 时间:2007-06-11 Tag: 点击:

7.2.2.3 makefile 的一个具体例子

在这里给读者举一个简单的 makefile 的例子,通过对这个 makefile 的讲解,来巩固前面介绍的相关知识。

INCLUDES =-I/home/nie/mysrc/include \

-I/home/nie/mysrc/extern/include \

-I/home/nie/mysrc/src \

-I/home/nie/mysrc/libsrc \

-I. \

-I..

EXT_CC_OPTS = -DEXT_MODE

CPP_REQ_DEFINES = -DMODEL=tune1 -DRT -DNUMST=2 \

-DTID01EQ=1 -DNCSTATES=0 \

-DMT=0 -DHAVESTDIO

RTM_CC_OPTS = -DUSE_RTMODEL

CFLAGS = -O -g

CFLAGS += $(CPP_REQ_DEFINES)

CFLAGS += $(EXT_CC_OPTS)

CFLAGS +=$(RTM_CC_OPTS)

SRCS = tune1.c rt_sim.c rt_nonfinite.c grt_main.c rt_logging.c \

ext_svr.c updown.c ext_svr_transport.c ext_work.c

OBJS = $(SRCS:.c=.o)

RM = rm – f

CC = gcc

LD = gcc

all: tune1

%.o : %.c

$(CC) -c -o $@ $(CFLAGS) $(INCLUDES) $<

tune1 : $(OBJS)

$(LD) -o $@ $(OBJS) -lm

clean :

$(RM) $(OBJS)

在这个 makefile 中首先定义了十个宏:

' INCLUDES =-I …'( 省略号代表 -I 后面的内容 ) , '-I dirname' 表示将 dirname 所指的目录加入到程序头文件目录列表中去,是在进行预处理过程中使用的参数;

' EXT_CC_OPTS = -DEXT_MODE ' 表示在程序中定义了宏 EXT_MODE ,等价于在源代码写入语句 ' #define EXT_MODE ' ;

接下来的两个宏定义 CPP_REQ_DEFINES 和 RTM_CC_OPTS 起到和 EXT_CC_OPTS 类似的作用;

'CFLAGS =-O -g ' 是编译器的编译选项,表示在编译的过程中对代码进行基本优化,并产生能被GNU 调试器 ( 如 gdb) 使用的调试信息;

'CFLAGS += ' 表示对这个宏定义在原来的基础上增加新的内容;

' SRCS = …' 代表了所有要编译的源代码文件列表;

' OBJS = $(SRCS:.c=.o)' 表示把宏 SRC 所代表的所有以 .c 结尾的文件名用 .o 结尾的文件名替换,即表示各个源文件所对应的目标文件名;

' RM = rm – f ' 表示删除命令, -f 是强制删除选项,使用该符号,在对文件进行删除时,没有提示;

' CC = gcc ' 表示编译器是用 gcc ;

' LD= gcc' 表示链接命令是用 gcc ;

all 和 clean 是两个伪目标,在使用 make 命令的时候,如果不指明目标文件名,则是以在 makefile中出现的第一个目标作为最终目标,所以如果键入命令 make ,则伪目标 all 被作为最终的目标而执行,由于这个文件并不存在,所以 make 会尝试更新 all 规则,因此就检查它的依赖文件 tune1 是否需要更新,如果需要,就把它更新,这样伪目标下面的两条规则就会被执行,从而生成可执行文件 tune1 。如果要执行删除命令,只需要键入命令 make clean ,就会把所有以 .o 结尾的中间文件删除。

另外,请读者注意在本 makefile 的例子中多次用到 ' \' ,该符号用于在 makefile 中,如果一条语句过长时,可以用 ' \' 放在这条语句的右边界,通过回车换行,使下面新一行的语句成为该语句的续行。

在 makefile 文件中,用符号 ' #' 作为注释行语句的开始,以增强 makefile 文件的可读性。

本例假设 makefile 文件名为 makefile ,当然也可按照个人的喜好取其他文件名,如果文件名不是 makefile , Makefile 的话,在用 make 命令是,请使用 make – f makefilename 。到此,希望读者能够掌握 make 和 makefile 的基本使用。


最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册