未定义对pthread的引用

问题描述 投票:0回答:1

我想编译一个使用线程的程序。我使用 #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文件中做哪些修改?

c multithreading makefile compilation
1个回答
1
投票

你的 LINK.c 是错误的。 你不能把库加到这上面,因为这意味着它们先出现在链接行。

如果你除了给我们看makefile之外,还给我们看make的输出,可能我们会看得更快。 像这样的库 -lpthread 动辄 结束 的链接行,在任何可能需要使用库的对象之后。

正如我在评论中提到的,你应该删除 LINK.c 设置和添加。

CFLAGS = -pthread

这样就足够了 如果你确实需要添加库,你应该使用 LDLIBS 像这样。

LDLIBS = -lpthread

不更换 LINK.c 可变的。

© www.soinside.com 2019 - 2024. All rights reserved.