日期:2014-05-16  浏览次数:20701 次

Makefile文件的编写
我看到一个Makefile文件中:
MACRO_DEFINE = -D_ONBOARD
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
RM = rm -f
CP = cp -f
AR  =  ar rcs
这里的MACRO_DEFINE CC CXX RM CP AR应该不是环境变量吧?我export找不到。

另外,
CFLAGS = $(INCLUDE) $(MACRO_DEFINE) -Wall -W -g 
CXXFLAGS = $(INCLUDE) $(MACRO_DEFINE) -Wall -W -g 
这里的CFLAGS CXXFLAGS是编译器选项 那具体是起什么作用?
谢谢。
------解决方案--------------------
MACRO_DEFINE = -D_ONBOARD
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
RM = rm -f
CP = cp -f
AR  =  ar rcs
这些是定义,定义MACRO_DEFINE为-D_ONBOARD
CC为$(CROSS_COMPILE)gcc等等。
在makefile的其它地方,就可以用RM来替代rm -f。也可以理解为赋值。
------解决方案--------------------

-Wall  --> warning all 显示所有警告
-g  --> gdb? 包括调试信息

------解决方案--------------------
1、MACRO_DEFINE CC CXX RM CP AR
这些仅仅只是定义的变量而已,用其他名称也可以,真正启作用的是后面附的值,
2、同二楼,度娘一些就知道了。
假如makefile中有使用CC的地方,也可以通过make CC=arm-linux-gcc传递过去的
------解决方案--------------------
变量相关的楼上都解释过了,就不赘述
关于CFLAGS/CXXFLAGS是make的内嵌变量,它的作用是指定编译时的编译选项。
如果想知道各个编译选项的作用,还是去看下gcc的使用说明吧