gpt4 book ai didi

c - 对使用 -pthread 和 -lpthread 编译的 pthread_wait 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 18:31:15 30 4
gpt4 key购买 nike

我收到以下错误:

assign4.o: In function `main':
assign4.c:(.text+0x76f): undefined reference to `pthread_broadcast'
assign4.o: In function `threadFunc':
assign4.c:(.text+0x15fd): undefined reference to `pthread_wait'
assign4.c:(.text+0x17f3): undefined reference to `pthread_wait'
collect2: ld returned 1 exit status

编译时:

gcc -pthread assign4.c -o assign4 -lm

gcc assign4.c -o assign4 -lm -lpthread

这是对 pthread_broadcast 的调用:

while (killCount < numThreads) {
while (waitCount < numThreads);
waitCount = 0;
pthread_broadcast();
}

对 pthread_wait 的调用:

pthread_wait();
for (i = 0; i < partInfo.groupSize; i++) {
for (j = 0; j < numParts; j++) {
gravitation(bodies[i], parts[i]);
}
}
if (pthread_mutex_lock(&mtx) != 0) {
printf("Error locking mutex.\n");
return -1;
}
waitCount++;
if (pthread_mutex_unlock(&mtx) != 0) {
printf("Error unlocking mutex.\n");
return -1;
}
pthread_wait();
if (pthread_mutex_lock(&mtx) != 0) {
printf("Error locking mutex.\n");
return -1;
}

如您所见,我尝试使用 -pthread 和 -lpthread 进行编译,但它不起作用。我想这一定是我错过的一些非常明显的东西,但我不知道是什么。

提前谢谢您!

最佳答案

没有名为pthread_wait()的函数,它可能是pthread_cond_wait() 。这就是您收到链接器错误的原因。当链接器无法找到函数定义时,它会给出 undefined reference 错误。所以你得到了

assign4.c:(.text+0x15fd): undefined reference to `pthread_wait'
assign4.c:(.text+0x17f3): undefined reference to `pthread_wait'

我认为对于pthread_broadcast()也有同样的错误,它应该是pthread_cond_broadcast() .

关于c - 对使用 -pthread 和 -lpthread 编译的 pthread_wait 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25278254/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com