我使用的Eclipse在Fedora 17(海湾合作委员会),我对在pthread_create(未定义参考),即使包含pthread.h我若-lpthread在gcc编译命令行上...
这是我的代码,以防万一
void* repair()
{
int var;
for ( var = 0; var < NB_ITER ; var += 2 )
{
printf( "PAIR : %d\n", var );
}
return NULL;
} // pair
void exo03()
{
pthread_t id1;
pthread_create(&id1, NULL, &repair, NULL);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮忙 :)
在linux,FreeBSD(以及其他一些*nix版本)上你应该使用编译器选项-pthread而不是尝试链接到pthread库.
对于日食:
Eclipse未配置为将-pthread参数放在gcc编译中.要解决此问题,请转到菜单:
项目 - >属性
c/c ++ build - > GCC C编译器 - >其他
将"-pthread"参数添加到"Other Flags"的开头
还去:
c/c ++ build - >设置 - > GCC C链接器 - >库
并将"pthread"库包含到其他库中.单击"应用"并重建项目.Pthreads现在必须工作.
来自man gcc:
-pthread:使用pthreads库添加对多线程的支持.此选项为预处理器和链接器设置标志.
在GCC中,-pthread(aka -pthreads)选项管理编译器预处理器/和/链接器以启用使用Posix线程的编译.预处理器将定义/启用/使用某些宏的Posix线程版本(或执行条件编译以启用Posix线程逻辑),链接器将专门将结果对象链接到libpthread
但是,-lpthread只是告诉链接器尝试解析针对libpthread库的任何外部引用,就像-lm告诉链接器尝试解析针对libm库的任何外部引用一样.对于-lpthread,您的代码可能不包含对libpthread的外部引用,即使您编写了Posix线程代码,因为关键宏尚未打开.
| 归档时间: |
|
| 查看次数: |
9504 次 |
| 最近记录: |