makefile中的Cflags用法

时间:2018-03-02 06:06:34

标签: c makefile

我想知道C FLAGS的使用。在make文件中,下面的代码片段是什么意思?

CFLAGS=-00 -g 
${PROG}: ${OBJS}
${CC} ${CFLAGS} -o ${PROG} ${OBJS} ${LDFLAGS}

-00定义了什么?

############# Target type (Debug/Release) ##################
############################################################
TARGET_NAME=telematics

CFLAGS=-O0 -g
LinkDebug=-g -Xlinker -Map=$(TARGET_NAME)debug.map
LinkRelease=-O -s -Xlinker -Map=$(TARGET_NAME).map
SUPPRESS_WARNINGS=-Wno-write-strings -Wno-builtin-macro-redefined
COMMON_DEFINES = -DA5N2 -DLINUX_SYSTEM -DCT_2
C___DEFINES =
CPP_DEFINES = -std=c++11 -D_GLIBCXX_USE_C99 -DUSE_IOSTREAM -DOM_NO_TEMPLATES_USAGE -DOM_NO_FRAMEWORK_MEMORY_MANAGER
ConfigurationCPPCompileSwitches= $(SUPPRESS_WARNINGS) $(COMMON_DEFINES) $(CPP_DEFINES) $(INCLUDE_PATH) $(CFLAGS) -c
ConfigurationCCompileSwitches=   $(SUPPRESS_WARNINGS) $(COMMON_DEFINES) $(C___DEFINES) $(INCLUDE_PATH) $(CFLAGS) -c

###### Commands & Flags ################
RM=/bin/rm -rf
MD=/bin/mkdir -p
CC=arm-linux-gcc
LIB_CMD=arm-linux-ar
LINK_CMD=$(CC)
LIB_FLAGS=rvu

######### Context macros ##################

我的问题是基本了解-00是否用于静态分析?从make文件我认为它是-00(两个零)

1 个答案:

答案 0 :(得分:1)

除了the answer by Basile Starynkevitch之外,我还要添加:

  

在make文件中,下面的代码段是什么意思?

CFLAGS=-00 -g

上面指定-O0 -g(使调试信息按预期工作,并分别添加调试信息)到CFLAGS变量。

${PROG}: ${OBJS}
        ${CC} ${CFLAGS} -o ${PROG} ${OBJS} ${LDFLAGS}

上面为变量PROG中命名的文件创建了一个编译配方,其中以变量OBJS命名的文件作为先决条件。请注意,缩进使用 TAB s,而不是空格。 (此论坛将标签转换为代码段中的空格,这就是为什么如果将上述内容复制并粘贴到编辑器中,则会获得空格。)

make解释的方式如下:首先,必须创建变量OBJS中列出的所有文件(并且足够新)。然后,需要运行变量CC中命名的命令,参数为${CFLAGS} -o ${PROG} ${OBJS} ${LDFLAGS}$

例如,如果CC=arm-linux-gccPROG=foobarOBJS=foobar.oLDFLAGS=-lm生成foobar,则需要首先确保foobar.o }存在且足够新,然后运行arm-linux-gcc -o foobar foobar.o -lm