2014-02-27 25 views
1

好像我在与并行线程的问题时,我尝试用一​​个Makefile编译:问题与并行线程compling

/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

你看到'ld'命令行中,当你'make'去?我假设'-lpthread'实际上并没有进入'ld'。 –

+0

我得到'GCC -lpthread proxy.o csapp.o -o代理 csapp.o:在函数 '在pthread_create':' – Space

+0

为什么'Pthread_create'资本? –

回答

3

我相信你的问题是与LDFLAGS

10.3 Variables Used by Implicit Rules

LDFLAGS额外的标志来给编译器时,他们都应该调用链接,ld,如-L。库(-lfoo)应该被添加到LDLIBS变量代替。

LDLIBS当编译器应该调用链接程序时给予编译器的库标志或名称,ldLOADLIBES被弃用(但仍支持)替代LDLIBS。非库连接标志,如-L,应该在LDFLAGS变量。

所以尝试:

LDLIBS = -lpthread 
+0

是啊这工作,谢谢! – Space