1. 程式人生 > >靜態庫和動態庫的兩種不同的Makefile寫法

靜態庫和動態庫的兩種不同的Makefile寫法

不同 .so code lib pic 動態庫 sha stat 靜態

動態庫

PROG=add
BIN=$(PROG).bin
SOADD= lib$(PROG).so
SHAREDOBJS= $(PROG).o
OBJS= main.o

CC=gcc

$(PROG):$(SOADD) $(OBJS)
    $(CC) $(OBJS) $(SOADD) -o $(PROG)

$(SOADD):$(SHAREDOBJS)
    $(CC) -shared $(SHAREDOBJS) -o $(SOADD)

%.o:%.c
    $(CC) -c -fpic -o $@ $<

clean:
    rm -vf $(OBJS) $(PROG) $(BIN) $(SOADD) $(SHAREDOBJS)

靜態庫

PROG=add
BIN=$(PROG).bin
SOADD= lib$(PROG).a
STATICOBJS= $(PROG).o
OBJS= main.o

CC=gcc

$(PROG):$(SOADD) $(OBJS)
    $(CC) $(OBJS) $(SOADD) -o $(PROG)

$(SOADD):$(STATICOBJS)
    ar -r $(SOADD) $(STATICOBJS)

%.o:%.c
    $(CC) -c -o $@ $<

clean:
    rm -vf $(OBJS) $(PROG) $(BIN) $(SOADD) $(STATICOBJS)

普通寫法

PROG=add
BIN=$(PROG).bin
OBJS= main.o add.o

CC=gcc

$(PROG):$(OBJS)
    $(CC) -o $(PROG) $(OBJS) 

%.o:%.c
    $(CC) -c -o $@ $<

clean:
    rm -vf $(OBJS) $(PROG) $(BIN)

靜態庫和動態庫的兩種不同的Makefile寫法