我想编译一个使用线程的程序。我使用 #include <pthread.h>
库,但是当我用我的make文件编译它时,我得到以下错误。
file.c:(.text+0x378): undefined referece to `pthread_create`
file.c:(.text+0x3ad): undefined referece to `pthread_join`
程序运行正常 gcc
编译器使用 -lpthread
flag我使用的make文件的来源。
CC=gcc
COMPILE.c=$(CC) $(CFLAGS) $(CPPFLAGS) -c
LINK.c=$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -lpthread
CFLAGS = -Wall -O -I$(dir $(LIBLAB))
TEMPFILES = core core.* *.o temp.* *.out typescript*
all:
@echo "Please compile directly the intended programs by name"
clean:
rm -f ${TEMPFILES}
我设置了 -lpthread
标志,但却无法使用,我应该在make文件中做哪些修改?
你的 LINK.c
是错误的。 你不能把库加到这上面,因为这意味着它们先出现在链接行。
如果你除了给我们看makefile之外,还给我们看make的输出,可能我们会看得更快。 像这样的库 -lpthread
动辄 结束 的链接行,在任何可能需要使用库的对象之后。
正如我在评论中提到的,你应该删除 LINK.c
设置和添加。
CFLAGS = -pthread
这样就足够了 如果你确实需要添加库,你应该使用 LDLIBS
像这样。
LDLIBS = -lpthread
不更换 LINK.c
可变的。