linux的aix下的makefile参考
2015-11-01 22:28
375 查看
一、详解
(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 *.log ok: ./$(TARGET)(2)Aix生成可执行文件(包括oracle库)
CC = xlC_r -q64 CFLAGS = -g OBJS = main.o cdc_sync.o source_data.o target_data.o TARGET = cdc_sync LIBS=-I$(ORACLE_HOME)/precomp/public \ -I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public PUBFLAGS = -L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -lclntsh -locci all:$(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_r PUBFLAGS = -qthreaded -DAIX -DAIX64 -q64 -bhalt:5 -qstaticinline -qrtti=all -lclntsh -lpthread -lm -lc -lnsl -lrt -ldl CFLAGS = -I./ OBJS = mario.o mario_akg.o mario_conn.o mario_log.o mario_network.o mario_util.o TARGET= libmario_tcp.so SOFLAGS =-G -bM:SRE -bnoentry -qrtti=all -qmkshrobj all:$(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_r PUBFLAGS = -qthreaded -DAIX -DAIX64 -q64 -bhalt:5 -qstaticinline -qrtti=all -lclntsh -lpthread -lm -lc -lnsl -lrt -ldl CFLAGS = -I./ OBJS = mario.o mario_akg.o mario_conn.o mario_log.o mario_network.o mario_util.o TARGET= libmario_tcp.so SOFLAGS =-G -bM:SRE -bnoentry -qrtti=all -qmkshrobj all:$(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/sh CURRENT_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 done echo "完成"(5)包含一个静态库生成的例子(部分)
include ../make_inc/mk_inc.mk CFLAGS = $(PCLIBFLAGS) OBJS= src/Iconfig.o src/proc_para.o DEFINED = -D _VERSION=0x10010000 $(PUBDEFINED) TARGET= libconfigure.so STALIB= libconfig.a TESTAPP=test4para all:$(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./include CFLAGS= $(INCLUDES) -q64 -q32 PLDFLAGS=-l nsl OBJS=Test7.o call.o DEBUG_FLAG = -g -D_DEBUG TARGET= mytest all:$(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.mk CFLAGS = $(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.dll all:$(TARGET) OneCard.dll:$(OBJS) $(CC) $(CFLAGS) $(LIBS) -o $@ $(OBJS) $(PLDFLAGS) ############################################################# CC=xlC_r -g OBJS= my_card.o TARGET= my_card all:$(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./include CFLAGS= $(INCLUDES) -q64 PLDFLAGS=-l nsl CLOBJS=src/trb_client.o src/trb_rpc_xdr.o src/trb_rpc_clnt.o SROBJS=src/trb_rpc_svc.o src/trb_rpc_xdr.o DEBUG_FLAG = -g -D_DEBUG CLIENT= trb_client SERVER= trb_server all:$(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.mk CFLAGS = $(PCLIBFLAGS) LIBS=-L$(TUXDIR)/lib -lwsc -lbuft -lgpnet -lfml -lfml32 -lengine -lpthread -lnsl -lz -lm -lcrypt -lregistry -ldl -w OBJS= my_card.o DEFINED = -DSHOW_INFO -DLZY_C_PLUS_PLUS -DPROXY_PART TARGET= my_card.dll all:$(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.o TARGET=pThreadT all:$(TARGET) $(TARGET):$(OBJS) $(CC) -o $@ $(OBJS) .SUFFIXES:.o .h .SUFFIXES:.cpp .o .cpp.o: $(CC) -o $@ -c $< .PHONY : clean clean: rm -f $(TARGET) $(OBJS) core ############################################################################# OBJECT=thread.cpp EXEC=thread cc=xlC_r buid: $(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)若有建议,请留言,在此先感谢!
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区