我正在尝试在使用下面的makefile创建我的程序可执行文件时链接一个静态库。
IDIR =../inc
CC=g++ -g
CFLAGS=-I$(IDIR)
WFLAGS=-Wall -W
OFLAGS=-O3
DLINUX=-D_LINUX
ODIR=obj
LDIR =../lib
LIBS=-lm
_OBJ = testclient.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/testclient.o: testclient.c
$(CC) -c $< $(CFLAGS) -o $@
$(ODIR)/file2.o: file2.c
$(CC) -c $< $(CFLAGS) -o $@
testclient: $(OBJ)
$(CC) -o $@ $^ $(LIBS) -lccn -pthread
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~
我已经尝试了所有可用的方法,从更改“ -lccn
”参数的顺序到检查函数是否存在于库中(在其中nm libccn.a
提供所需的函数ccn_create()
)。返回的错误是:
obj/testclient.o: In function `main':
/root/testClient/src/testclient.c:91: undefined reference to `ccn_create()'
图书馆libccn.a
在/usr/local/lib
. 我还尝试更改目录路径,然后使用-L
标志查看该位置。也不行。:( ..关于如何使它工作的任何想法?