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

動態庫

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章