当前位置: 技术问答>linux和unix
多线程编译报错
来源: 互联网 发布时间:2016-03-06
本文导语: #include #include #include #include void *input(void *ch); char i; int main() { pthread_t t1,t2; char message[]="t1"; pthread_create(&t1,NULL,input,(void *)message);//《----也就是这里出错,奇怪的问题,我可以找到我的头...
#include
#include
#include
#include
void *input(void *ch);
char i;
int main()
{
pthread_t t1,t2;
char message[]="t1";
pthread_create(&t1,NULL,input,(void *)message);//《----也就是这里出错,奇怪的问题,我可以找到我的头文件,并且在里面找到了对应的函数定义等。。
exit(1);
}
void *input(void *ch)
{
while(1)
{
printf("ok");
}
}
错误:/root/thread/src/thread.cpp:15: undefined reference to `pthread_create'
我查找_POSIX_VERSION的值,是大于199506,也就是说支持多线程阿,我用的是linux redflag 6。1 SP1+KDE 3。5。7
现在只要是关于多线程的就一定报一些莫名的问题,像是pthread_join或者是pthread_exit等,都是这个错误,但是其他的问题就没有,像是信号等的函数就没有任何问题。请问我这里是需要带参数呢?还是需要加入头函数?
要是打错字,会提示/root/thread/src/thread.cpp:15: error: ‘pthread_Create’ was not declared in this scope
这里是头文件里的声明:
__BEGIN_DECLS
/* Create a new thread, starting with execution of START-ROUTINE
getting passed ARG. Creation attributed come from ATTR. The new
handle is stored in *NEWTHREAD. */
extern int pthread_create (pthread_t *__restrict __newthread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) __THROW __nonnull ((1, 3));
/* Terminate calling thread.
#include
#include
#include
void *input(void *ch);
char i;
int main()
{
pthread_t t1,t2;
char message[]="t1";
pthread_create(&t1,NULL,input,(void *)message);//《----也就是这里出错,奇怪的问题,我可以找到我的头文件,并且在里面找到了对应的函数定义等。。
exit(1);
}
void *input(void *ch)
{
while(1)
{
printf("ok");
}
}
错误:/root/thread/src/thread.cpp:15: undefined reference to `pthread_create'
我查找_POSIX_VERSION的值,是大于199506,也就是说支持多线程阿,我用的是linux redflag 6。1 SP1+KDE 3。5。7
现在只要是关于多线程的就一定报一些莫名的问题,像是pthread_join或者是pthread_exit等,都是这个错误,但是其他的问题就没有,像是信号等的函数就没有任何问题。请问我这里是需要带参数呢?还是需要加入头函数?
要是打错字,会提示/root/thread/src/thread.cpp:15: error: ‘pthread_Create’ was not declared in this scope
这里是头文件里的声明:
__BEGIN_DECLS
/* Create a new thread, starting with execution of START-ROUTINE
getting passed ARG. Creation attributed come from ATTR. The new
handle is stored in *NEWTHREAD. */
extern int pthread_create (pthread_t *__restrict __newthread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) __THROW __nonnull ((1, 3));
/* Terminate calling thread.
|
gcc t.c -lpthread
注意加上 -lpthread
注意加上 -lpthread
|
-lpthread