linux的aix下的makefile参考

来源:互联网 发布:电脑双肩包 知乎 编辑:程序博客网 时间:2024/06/01 07:58

一、详解

(1)简单模板makefile:
CC = OBJS = CFLAGS = TARGET = all:$(TARGET)$(TARGET):$(OBJS)         $(CC) $(CFLAGS) -o $@ $(OBJS).SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(TARGET) core *.logok:        ./$(TARGET)
(2)Aix生成可执行文件(包括oracle库)
CC = xlC_r -q64CFLAGS = -gOBJS = main.o cdc_sync.o source_data.o target_data.oTARGET = cdc_syncLIBS=-I$(ORACLE_HOME)/precomp/public \     -I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/publicPUBFLAGS = -L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -lclntsh -locciall:$(TARGET)$(TARGET):$(OBJS)        $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(PUBFLAGS).SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) -c $(CFLAGS) -o $@ $< $(LIBS) $(PUBFLAGS)ok:        ./$(TARGET)clean:        rm -rf $(TARGET) $(OBJS) core *.log
(3)Aix生成动态库
CC = xlc_rPUBFLAGS = -qthreaded -DAIX -DAIX64 -q64 -bhalt:5 -qstaticinline -qrtti=all -lclntsh -lpthread -lm -lc -lnsl -lrt -ldlCFLAGS = -I./OBJS = mario.o mario_akg.o mario_conn.o mario_log.o mario_network.o mario_util.oTARGET= libmario_tcp.soSOFLAGS =-G -bM:SRE -bnoentry -qrtti=all -qmkshrobjall:$(TARGET)$(TARGET):$(OBJS)         $(CC) $(CFLAGS) -o $@ $(OBJS) $(PUBFLAGS) $(SOFLAGS).SUFFIXES:.o .h.SUFFIXES:.c .o.c.o:        $(CC) $(PUBFLAGS) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) core *.log
CC = xlc_rPUBFLAGS = -qthreaded -DAIX -DAIX64 -q64 -bhalt:5 -qstaticinline -qrtti=all -lclntsh -lpthread -lm -lc -lnsl -lrt -ldlCFLAGS = -I./OBJS = mario.o mario_akg.o mario_conn.o mario_log.o mario_network.o mario_util.oTARGET= libmario_tcp.soSOFLAGS =-G -bM:SRE -bnoentry -qrtti=all -qmkshrobjall:$(TARGET)$(TARGET):$(OBJS)         $(CC) $(CFLAGS) -o $@ $(OBJS) $(PUBFLAGS) $(SOFLAGS).SUFFIXES:.o .h.SUFFIXES:.c .o.c.o:        $(CC) $(PUBFLAGS) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) core *.log
(4)编译当前目录及子目录下所有makefile的shell脚本
#!/usr/bin/shCURRENT_DIR=`pwd`echo "开始编译当前目录下所有源码"TMP_DIR=`find ./ -name makefile`for MK_DIR in $TMP_DIR do  DIR_LEN=`expr length "$MK_DIR"`  let DIR_LEN=DIR_LEN-8        cd `echo $MK_DIR |cut -c 1-"$DIR_LEN"`        pwd        make clean        make all        cd $CURRENT_DIR doneecho "完成"
(5)包含一个静态库生成的例子(部分)
include ../make_inc/mk_inc.mkCFLAGS = $(PCLIBFLAGS) OBJS=  src/Iconfig.o src/proc_para.oDEFINED = -D _VERSION=0x10010000  $(PUBDEFINED)TARGET= libconfigure.soSTALIB= libconfig.aTESTAPP=test4paraall:$(TARGET) test:$(TESTAPP)libconfigure.so:$(OBJS)        $(CC) $(CFLAGS) -o $@ $(OBJS) $(PLDFLAGS)  $(SOFLAGS) -L../public/lib -lpublic        cp -f $(TARGET) ../bin        rm -f $(TARGET) *.o         libconfig.a:$(OBJS)        ar $(ARFLAG) $@ $(OBJS)        cp -f $(STALIB) ./lib        test4para:test/test4para.o        $(CC) $(PCFLAGS) -o $@ test/test4para.o $(PLDFLAGS) -Llib -lconfig        rm test/test4para.o        .SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEFINED) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) src/Iconfig.o core *.log
(6)其他makefile参考
##################################################CC=xlC_r -w  armcc INCLUDES=-I./includeCFLAGS= $(INCLUDES) -q64  -q32PLDFLAGS=-l nslOBJS=Test7.o call.oDEBUG_FLAG = -g -D_DEBUGTARGET= mytestall:$(TARGET)  mytest:$(OBJS)         $(CC) $(CFLAGS) -o $@ $(OBJS) $(PLDFLAGS).SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEBUG_FLAG) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(TARGET) core *.log#####################################################include ../make_inc/mk_inc.mkCFLAGS = $(PCLIBFLAGS)LIBS=-L$(TUXDIR)/lib -lwsc -lbuft -lgpnet -lfml -lfml32 -lengine -lpthread -lnsl -lz -lm -lcrypt -lregistry -ldl -w OBJS= ServiceOneCard.o one_card.o MsgDeal.o pubFunc.o tux_call.o DEFINED = -DSHOW_INFO -DLZY_C_PLUS_PLUS -DPROXY_PART TARGET= OneCard.dllall:$(TARGET)OneCard.dll:$(OBJS)        $(CC) $(CFLAGS) $(LIBS) -o $@ $(OBJS)  $(PLDFLAGS)#############################################################CC=xlC_r -gOBJS= my_card.o TARGET= my_cardall:$(TARGET)$(TARGET):$(OBJS)        $(CC) $(CFLAGS) -o $@ $(OBJS)         cp -f $(TARGET) ../bin/plusin        rm -f $(TARGET) *.o.SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEFINED) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) core *.log        cp -f $(TARGET) ../bin/plusin        rm -f $(TARGET) *.o.SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEFINED) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) core *.log##############################################################CC=xlC_r -w INCLUDES=-I./includeCFLAGS= $(INCLUDES) -q64 PLDFLAGS=-l nslCLOBJS=src/trb_client.o src/trb_rpc_xdr.o src/trb_rpc_clnt.oSROBJS=src/trb_rpc_svc.o src/trb_rpc_xdr.oDEBUG_FLAG = -g -D_DEBUGCLIENT= trb_clientSERVER= trb_serverall:$(SERVER) $(CLIENT)                        trb_client:$(CLOBJS)         $(CC) $(CFLAGS) -o $@ $(CLOBJS) $(PLDFLAGS)trb_server:$(SROBJS)         $(CC) $(CFLAGS) -o $@ $(SROBJS) $(PLDFLAGS).SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEBUG_FLAG) -c $(CFLAGS) -o $@ $<clean:        rm -f $(CLOBJS) $(SROBJS) $(TARGET) core *.log#######################################################生成my_card.dll无头文件include ./make_inc/mk_inc.mkCFLAGS = $(PCLIBFLAGS)LIBS=-L$(TUXDIR)/lib -lwsc -lbuft -lgpnet -lfml -lfml32 -lengine -lpthread -lnsl -lz -lm -lcrypt -lregistry -ldl -w OBJS= my_card.oDEFINED = -DSHOW_INFO -DLZY_C_PLUS_PLUS -DPROXY_PART TARGET= my_card.dllall:$(TARGET)my_card.dll:$(OBJS)        $(CC) $(CFLAGS) $(LIBS) -o $@ $(OBJS)  $(PLDFLAGS)        cp -f $(TARGET) ../bin/plusin        rm -f $(TARGET) *.o.SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) $(DEFINED) -c $(CFLAGS) -o $@ $<clean:        rm -f $(OBJS) $(LINK_OBJ) $(TARGET) core *.log##################################################################CC=xlC_r -g OBJS=pthreadT.oTARGET=pThreadTall:$(TARGET)$(TARGET):$(OBJS)        $(CC) -o $@ $(OBJS).SUFFIXES:.o .h.SUFFIXES:.cpp .o.cpp.o:        $(CC) -o $@ -c $<.PHONY : cleanclean:        rm -f $(TARGET) $(OBJS) core#############################################################################OBJECT=thread.cppEXEC=threadcc=xlC_rbuid:        $(cc) -g -o $(EXEC) $(OBJECT)clean:        -rm -f $(EXEC)
(7)makefile的通配符测试
src = $(wildcard *.cpp ./sub/*.cpp)dir = $(notdir $(src))obj = $(patsubst %.cpp, %.o, $(dir))all:        @echo $(src)        @echo $(dir)        @echo $(obj)

二、总结

(1)Aix优化参数:http://www.spec.org/cpu2006/flags/CPU2006_flags.20090715.html#Section_optimization。
(2)Makefile的详细内容可以参看GNU Make使用手册等其他的文档,还有很多的细节值得学习。
(3)若有建议,请留言,在此先感谢!
0 0
原创粉丝点击