AIX系统下的Makefile

因AIX下的Makefile目前还不支持Makefile函数,如果将Linux下的Makefile放入AIX系统下,会出现很多莫名其妙的错误。因此,很有必要总结一下AIX下Makefile的使用场景:

一、编译多个C文件生成可执行文件
如:test.h test.c main.c->main可执行文件
CC = cc
CFLAGS = -q64

INCLUDE = -I. \
                        -I$(HOME)/incl \
                        -I$(HOME)/src/incl
LIB_PATH = -L. \
                        -L$(HOME)/lib \
                        -L/usr/lib 

LIB_LIST = -lbase -lxml -lpkg  #(注:这里的动态链接库必须在LD_LIBRARY_PATH的指定路径下,否则会报找不到动态链接库)

OBJS = test.o main.o
TARGET = main


.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(INCLUDE) $(LIB_PATH) $(LIB_LIST)

.SUFFIXES: .o .c

.c.o:
    $(CC) $(CFLAGS) $(INCLUDE) -c $*.c

clean:
    rm -f $(OBJS) 
二、编译多个C文件,生成动态链接库
如:test.h test.c abc.c->libabc.so动态链接库
OBJS = test.o abc.o
TARGET = libabc.so

.PHONY: all clean

all: $(TARGET)
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -G -o $(TARGET) $(OBJS) $(INCLUDE)


.SUFFIXES: .o .c

.c.o:
    $(CC) $(CFLAGS) $(INCLUDE) -c $*.c

clean:
    rm -f $(OBJS) 
三、编译多个EC和C文件,生成可执行文件
如:编译test.h test.ec main.c->main可执行文件
OBJS = test.o main.o
TARGET = main

all: $(TARGET)
$(TARGET): $(OBJS)
    $(ESQL) $(CFLAGS) -o $(TARGET) $(OBJS) $(INCLUDE) $(LIB_PATH) $(LIB_LIST)

.SUFFIXES: .ec .c .o
.ec.o:
    rm -f $*.c
    $(ESQL) $(CFLAGS) $(INCLUDE) -c $*.ec
    rm -f $*.c

.c.o:
    $(CC) $(CFLAGS) $(INCLUDE) -c $*.c
四、编译多个EC和C文件,生成动态链接库
如:test.h test.ec abc.c->libabc.so动态链接库
CC = cc
ESQL = $(INFORMIXDIR)/bin/esql

CFLAGS = -q64

INCLUDE = -I. \
                        -I$(INFORMIXDIR)/incl/esql \
                        -I$(INFORMIXDIR)/incl/public 
LIB_PATH = -L$(INFORMIXDIR)/lib \
                        -L$(INFORMIXDIR)/lib/esql

LIB_LIST = -lbase -ltest -lhaha #(注:这里的动态链接库必须在LD_LIBRARY_PATH的指定路径下,否则会报找不到动态链接库)

OBJS = test.o abc.o
TARGET = libabc.so

.PHONY: all clean

all: $(TARGET)
$(TARGET): $(OBJS)
    $(ESQL) $(CFLAGS) -G -o $(TARGET) $(OBJS) $(LIB_PATH) $(LIB_LIST) $(INCLUDE)

.SUFFIXES: .ec .c .o
.ec.o:
    rm -f $*.c
    $(ESQL) $(CFLAGS) $(INCLUDE) -c $*.ec
    rm -f $*.c
.c.o:
    $(CC) $(CFLAGS) $(INCLUDE) -c $*.c

clean:
    rm -fr $(OBJS) $(TARGET)
作者:邹祁峰
2013年01月06日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值