转自:
问:
makefile中如何写?linux环境 生成.a库的makefile我是这样写的:
.SUFFIXES: .c .o
CC =gcc OSA=/data/users/osa
INCDIR=-I. -I$(OSA)/api
DEBUG = -g
C++FLAGS = -c $(DEBUG)
LIBS = -lpthread
LIB_DIR=/data/users/osa/api/ #PKIOBJ=PKITool.o kdmd5.o
LIB=libapi.a
PKIOBJ=api.o .c.o: $(CC) $(C++FLAGS) $(INCDIR) $*.c
all: PKITool
clean PKITool:$(PKIOBJ)
ar ruv $(LIB_DIR)$(LIB) *.o
ranlib $(LIB_DIR)$(LIB)
clean: rm *.o
生成了libapi.a库函数。 调用该库函数的makefile我是这样写的:但是报错找不到.a里面的函数。
.SUFFIXES: .c .o
CC =gcc OSA=/data/users/osa
INCDIR=-I. -I$(OSA)/api -L$OSA/api/test
DEBUG = -g
C++FLAGS = -c $(DEBUG)
LIBS = -lpthread
#PKIOBJ=PKITool.o kdmd5.o
PKIOBJ=test.o .c.o: $(CC) $(C++FLAGS) $(INCDIR) $*.c
all: PKITool
clean PKITool:$(PKIOBJ)
$(CC) $(DEBUG) -o test $(PKIOBJ) $(LIBS)
clean rm -f *.o
请问这两个makefile是不是哪里写的不对,改怎么修改?多谢
答:
我在你调用库函数的makefile里没有看到你对百libapi.a库的包含度,就像你包含动态库用-lpthread一样,你需要包含一下libapi.a静态内库,只是它的包含不需要在前面加-l或-L,直接把容你的libapi.a的路径和名字加上即可。 形如gcc -g -c test test.o -lpthread ./libapi.a