【发布时间】:2013-03-13 16:10:28
【问题描述】:
我正在尝试使用 gcc -Wall -std=c99 hilo.c - ./a.out hilo.c 运行此 C 程序,但收到以下错误消息:
hilo.c: In function ‘func’:
hilo.c:6:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘pthread_t’ [-Wformat]
hilo.c: In function ‘main’:
hilo.c:14:3: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default]
/usr/include/pthread.h:225:12: note: expected ‘void * (*)(void *)’ but argument is of type ‘void (*)(void)’
hilo.c:15:3: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default]
/usr/include/pthread.h:225:12: note: expected ‘void * (*)(void *)’ but argument is of type ‘void (*)(void)’
hilo.c:24:3: warning: statement with no effect [-Wunused-value]
/tmp/cchmI5wr.o: In function `main':
hilo.c:(.text+0x52): undefined reference to `pthread_create'
hilo.c:(.text+0x77): undefined reference to `pthread_create'
hilo.c:(.text+0x97): undefined reference to `pthread_join'
hilo.c:(.text+0xab): undefined reference to `pthread_join'
collect2: ld returned 1 exit status
不知道代码有什么问题,所以如果有人可以帮助我,将不胜感激。
这是代码:
#include <pthread.h>
#include <stdio.h>
void func(void){
printf("thread %d\n", pthread_self());
pthread_exit(0);
}
int main(void){
pthread_t hilo1, hilo2;
pthread_create(&hilo1,NULL, func, NULL);
pthread_create(&hilo2,NULL, func, NULL);
printf("the main thread continues with its execution\n");
pthread_join(hilo1,NULL);
pthread_join(hilo2, NULL);
printf("the main thread finished");
scanf;
return(0);
}
【问题讨论】:
-
@MichaelBurr:很遗憾,但如果其他问题的答案不正确,我不想将其标记为重复。
-
@Dietrich:太糟糕了,没有某种社区/版主/任何替代方案来覆盖 SO 上的已接受答案(我想有人可能会争辩说投票数应该如此)。我们还没有看到这里是否接受了正确的答案。
标签: c pthreads undefined-reference