linux的aix下的makefile参考

一、详解

(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)
(2)Makefile的详细内容可以参看GNU Make使用手册等其他的文档,还有很多的细节值得学习。
(3)若有建议,请留言,在此先感谢!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦2号

博文不易,支持的请给予小小打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值