当我尝试使用Makefile进行编译时,似乎我遇到了pthread的问题:
/csapp.c:462: undefined reference to `pthread_create'
我认为它可能与-lpthread有关? 这是我的Makefile(是的,他们有一个标签):
CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -lpthread
OBJS = proxy.o csapp.o
all: proxy
proxy: $(OBJS)
csapp.o: csapp.c
$(CC) $(CFLAGS) -c csapp.c
proxy.o: proxy.c
$(CC) $(CFLAGS) -c proxy.c
clean:
rm -f *~ *.o proxy
答案 0 :(得分:3)
我相信您的问题出在LDFLAGS
。
来自10.3 Variables Used by Implicit Rules:
LDFLAGS
当编译器应该调用链接器ld
时,例如-L
,给予编译器额外的标志。应将库(-lfoo
)添加到LDLIBS
变量中。
LDLIBS
当应用程序调用链接器ld
时,为编译器提供的库标记或名称。LOADLIBES
是LDLIBS
的已弃用(但仍受支持)的替代方案。非库链接器标志(例如-L
)应该放在LDFLAGS
变量中。
所以试试:
LDLIBS = -lpthread