风一样的男子的笔记 https://bbs.21ic.com/?99092 [收藏] [复制] [RSS]

日志

uClinux上的应用程序设计(5)

已有 876 次阅读2005-9-13 15:03 |个人分类:火爆嵌入式系统|系统分类:嵌入式系统


src目录下的Rules.make文件给出了编译的一些规则,如下:


#


# This file contains rules which are shared between multiple Makefiles.


#


 


#


# False targets.


#


.PHONY: dummy


 


#


# Special variables which should not be exported


#


unexport EXTRA_ASFLAGS


unexport EXTRA_CFLAGS


ifneq "$(ARCH)" "h8300"


unexport EXTRA_LDFLAGS


endif


unexport EXTRA_ARFLAGS


unexport SUBDIRS


unexport SUB_DIRS


unexport ALL_SUB_DIRS


unexport MOD_SUB_DIRS


unexport O_TARGET


unexport O_OBJS


unexport L_OBJS


unexport M_OBJS


unexport MI_OBJS


unexport ALL_MOBJS


# objects that export symbol tables


unexport OX_OBJS


unexport LX_OBJS


unexport MX_OBJS


unexport MIX_OBJS


unexport SYMTAB_OBJS


 


unexport MOD_LIST_NAME


 


include ../dir.config


include $(SRC_DIR)/arch.config


 


#


# Get things started.


#


first_rule: sub_dirs


       $(MAKE) all_targets


 


#


# Common rules


#


INC_DIR = -I$(SRC_DIR)/cal -I$(SRC_DIR)/xml -I$(SRC_DIR)/serial -I$(SRC_DIR)/packet -I$(SRC_DIR)/fifo -I$(SRC_DIR)/ping -I$(SRC_DIR)/interface -I$(SRC_DIR)/public


 


%.o: %.c


       @echo "Compiling..."


       @echo "$<"


       $(CXX) $(INC_DIR) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<


      


%.o: %.cpp


       @echo "Compiling..."


       @echo "$<" 


       $(CXX) $(INC_DIR) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<


      


# Rule to compile a set of .o files into one .o file


#


 


ifeq (.depend,$(wildcard .depend))


include .depend


else


.depend:       fastdep 


endif


 


ifneq ($(O_TARGET),$(O_OBJS))


$(O_TARGET): .depend $(O_OBJS)


       @echo "Linking..."


       @echo $(O_OBJS) " --> " $@


       @$(LD) $(EXTRA_LDFLAGS) -r -o $@ $(O_OBJS)


else


$(O_TARGET): .depend


endif


#


#


#


 


all:   $(O_OBJS)


       echo all


 


all_targets:  $(O_OBJS) $(O_TARGET)


 


#


 


#


# Rule to compile a set of .o files into one .a file


#


ifdef L_TARGET


$(L_TARGET): $(LX_OBJS) $(L_OBJS)


       rm -f $@


       $(AR) $(EXTRA_ARFLAGS) rcs $@ $(LX_OBJS) $(L_OBJS)


endif


 


#


# This make dependencies quickly


#


fastdep: dummy


       @echo "make fastdep"


       if [ -n "$(wildcard *.[chS])" ]; then \


       $(SCRIPTS_DIR)/mkdep *.[chS] > .depend; fi


       if [ -n "$(wildcard *.cpp)" ]; then \


       $(SCRIPTS_DIR)/mkdep *.cpp >> .depend; fi


 


#


# A rule to make subdirectories


#


sub_dirs: dummy


ifdef SUB_DIRS


       set -e; for i in $(SUB_DIRS); do $(MAKE) -C $$i; done


endif


#


# A rule to do nothing


#


dummy:


 


config:


       cd $(ROOT_DIR); make config


 


c clean:


       rm -f *.o


       rm -f *.gdb


       rm -f .depend


       rm -f test


       rm -f core


       rm -f *.elf


       rm -f *.elf2flt 


 


#


# This is useful for testing


#


script:


       $(SCRIPT)


 


run: test


       @echo ... running ...


       @echo `pwd`/test


       @./test


      


#


# This sets version suffixes on exported symbols


# Uses SYMTAB_OBJS


# Separate the object into "normal" objects and "exporting" objects


# Exporting objects are: all objects that define symbol tables


#


 


 


$(MX_OBJS):


       $(CC) $(CFLAGS) -DEXPORT_SYMTAB -c $(@:.o=.c)


 


$(LX_OBJS) $(OX_OBJS):


       $(CC) $(CFLAGS) -DMODVERSIONS -DEXPORT_SYMTAB -c $(@:.o=.c)


 


$(M_OBJS):


ifdef MAKING_MODULES


$(O_OBJS) $(L_OBJS):


endif


 


 


config 目录下,编写两个和架构有关的文件,对于x86平台,是arch.i386,如下:


.EXPORT_ALL_VARIABLES:


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


#


# Vendor specific settings


#


 


CONSOLE_BAUD_RATE = 19200


 


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


#


# The makefiles need to know how to do things in different contexts


# To save some pain we put it all here


#


# First settings we always want for all build


#


 


# ARCH = kernel,  TARGET_ARCH = uClibc


 


MACHINE       = i386


ARCH          = i386


CROSS_COMPILE =


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)