急问,关于 makefile 的问题。写过 makefile 的朋友请进啊!

jessiepan 2006-02-27 01:43:06
我以前开发项目,用过的软件开发平台都是IDE的,所以关于 makefile 是一无所知。请高手帮忙看看下面的这个 makefile 文件:

include $(IADK)/common_defs.mk

SYSTEM_COMPONENTS = $(TCPIP_MOD) $(PLATFORM_LIBS) $(OS_LIBS)
OPTS_COMMON = $(LDFLAGS_FFS) { $(SYSTEM_COMPONENTS) } -lC++

BINDIR = $(OUTPUT_DIR)
OBJDIR = $(OBJECT_DIR)
LIB_OUT_DIR = ../lib

OPTS_LINK = $(LDFLAGS_MI)
OUT_SUFIX=MI
OBJ_SUFIX=o

ifeq ($(_TM_DEBUG),-g)
OPTS_LINK = $(LDFLAGS_DEBUG) $(TCS_DIR)/lib/$(ENDIAN)/psosmon.o
OUT_SUFIX=OUT
OBJ_SUFIX=g
endif

USER_INCLUDE_DIR=../inc
USER_INCLUDES= -I$(USER_INCLUDE_DIR)

TMDVE = C:/BSP-7113
TMDVE = C:/BSP-7113-2.0

DVE_INCLUDES = -I$(TMDVE)/include
DVE_LIBS = -L$(TMDVE)/lib/el -L$(TMDVE)/bsp/bin/windows/el
#PLATFORM_BSP = $(BUILD_DIR)/libBSP_dve.o
PLATFORM_BSP = $(TMDVE)/bsp/bin/windows/el/libBSPDVE-2.o

OPTIONS_LINK=$(OPTS_LINK) $(OPTS_COMMON) $(DVE_LIBS) $(USER_LIBS)
OPTIONS_INCLUDE=$(TM_INCLUDES) $(PSOS_INCLUDES) $(TCPIP_INCLUDES) $(DVE_INCLUDES) $(USER_INCLUDES)

COMMON_OBJECT = $(OBJDIR)/startPlatform.$(OBJ_SUFIX) $(OBJDIR)/root.$(OBJ_SUFIX)

MPEG4_VER=xvid20041207
MPEG4_VER=xvid20050905

TCP_VER=PNA
TCP_VER=FUSION

USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT) -ljpeg -l$(MPEG4_VER)
VPATH += $(IADK)/lib/util

#########################################

include Makefile.jpeg
include Makefile.lib

USER_MAKEFILE=Makefile.gateway
USER_MAKEFILE=Makefile.writemac
USER_MAKEFILE=Makefile.libutil
USER_MAKEFILE=Makefile.switch.directAudio
USER_MAKEFILE=Makefile.switch

include $(USER_MAKEFILE)

include Makefile.cflags

##### MAC Limit #############################

MAC_VERSION=MAC_KENAIKE
MAC_VERSION=MAC_OFFICE_PAYMENT
MAC_VERSION=MAC_KERUI_20060105
MAC_VERSION=MAC_SONGBENZHINENG
MAC_VERSION=MAC_MAPLE
MAC_VERSION=MAC_XIAMEN_ZHUANGWEI
MAC_VERSION=MAC_SDA

TM_CFLAGS += -D$(MAC_VERSION)

#########################################

normal:all

all:$(APP_OUT)
@$(ECHO) -----------------------------
@$(ECHO) Build Complete Use $(TM_FREQ) For $(MAC_VERSION) , Successful...
@$(ECHO) -----------------------------

$(OBJDIR)/%.$(OBJ_SUFIX) : %.c
@$(ECHO) Compiling $<
@$(TMCC) -c $(TM_CFLAGS) $< -o $@ $(OPTIONS_INCLUDE)

clean_all:clean clean_libjpeg clean_libcommon

clean:
$(RM) -f $(APP_OBJ)
$(RM) -f $(APP_OUT)

#end of Makefile


哪位大虾能给点解释或加个注释的吗?必定高分相送。。。
...全文
414 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jessiepan 2006-03-27
哈哈, 问题解决了!

晕死~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

竟然是在 makefile 文件里注释加错了? # 后面的注释,不应该写在 makefile 文件里一行语句的后面,而应该另起一行,顶格写! 唉。。。 makefile 真是出不得半点差错,不然,真不知道还会出什么“怪”问题来。 makefile 里的学问还真多!! 经典。。
回复
mmxopq 2006-03-22
warning 不用管,在目录下建个temp文件夹就可以
回复
jessiepan 2006-03-22
帮我再看看这段语句:

ifeq ($(MAC_VERSION),MAC_SHIDEAN_060302)
USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT)SDA -ljpeg -l$(MPEG4_VER)
else
ifeq ($(MAC_VERSION),MAC_SONGBENZHINENG)
USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT)SBZN -ljpeg -l$(MPEG4_VER)
else
USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT) -ljpeg -l$(MPEG4_VER)
endif
endif

怎么感觉当 MAC_VERSION==MAC_SONGBENZHINENG 时,IF 下面的那条语句怎么没执行呢?USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT)SBZN -ljpeg -l$(MPEG4_VER)

这段语句的逻辑有什么错误吗??
回复
jessiepan 2006-03-18
装了个 Cygwin32,编译环境也搭建起来了,可是运行bash.exe这个程序时,老是出现下面的提示:
bash.exe: warning: could not find /tmp, please create!
bash-2.02$

是有什么问题吗?

我的程序编译后,可以通过,生成可执行的文件。 但那个提示是什么意思呢??
回复
chen2831278 2006-03-17
我在做USB驱动程序 也要用到MAKEFILE 现在是一点概念都没有呢 帮你顶一下把
回复
kmajian 2006-03-15
我知道的和楼上呢差不多. 呵呵! 帮你顶一个.
回复
Dualing 2006-03-15
CodeWarrior for ARM Developer Suite
我用CodeWarrior做过ARM的开发了,DSP吗,没怎么做过了,
我想Philips DSP肯定不是ARM的核,可能不支持吧,
要安装什么插件就不知道了,
回复
zgz 2006-03-04
99% 的开发工具都离不开makefile,包括很多IDE,背后依赖某种make工具....建议还是看看《GNU Make使用手册》吧,花不了多少时间的,对于搞embedded的来说(搞其他估计也一样),绝对值得。
回复
Dualing 2006-03-03
你的这段makefile应该不是太复杂吧,
感觉没什么解释的必要吧,
回复
Dualing 2006-03-03
怎么在 makefile 文件里,在一行代码的后面加上自己的中文注释呢?就像以前写C程序的注释那样,用什么符号隔开呢?
用“#”就可以了,
CodeWarrior 我用过,怎么啦?
回复
jessiepan 2006-03-03
谢谢 Dualing() 啊!呵呵。。

我想请问你是用 CodeWarrior 做什么产品的?CodeWarrior的开发平台可以支持Philips DSP(pnx1300)的吗? 听说好象是需要装个什么插件的??
回复
jessiepan 2006-03-01
前一两天看了文档,了解,学习,开始在慢慢的读 makefile 文件了,能看得懂那么一点点。问个弱弱的问题:怎么在 makefile 文件里,在一行代码的后面加上自己的中文注释呢?就像以前写C程序的注释那样,用什么符号隔开呢?

顺便再问一下,这里有用过 CodeWarrior 开发平台的朋友吗?
回复
bluedreammer 2006-02-28
网上很多Makefile的介绍,可以看看基础的知识先,理解其框架。
至于很多选项,可以查询手册了。
回复
jessiepan 2006-02-28
谢谢楼上的两位朋友!

《GNU Make使用手册》,这个要看完,估计也要花上蛮长的时间,够呛:( 小弟我以前也从没接触过linux方面的东西。 现在不要求自己能独立的写个 makefile 出来,但我连看都看不懂啊!!有没有速成一点的?能让偶在一天之内能基本上看懂这个 makefile

谢谢先了。。
回复
TheSaviour 2006-02-27
去下一本《GNU Make使用手册》,这个有中文版本。
回复
dzy1982 2006-02-27
很难一下讲明白的。
回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2006-02-27 01:43
社区公告
暂无公告