靜態庫和動態庫的兩種不同的Makefile寫法
阿新 • • 發佈:2018-01-28
不同 .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寫法