pthread_create在编译时返回错误

我已经使用下面的代码来创build两个线程:

//header files #include <pthread.h> struct thread_arg { int var1; int var2; }; void *serv_com(void *pass_arg) { struct thread_arg *con = pass_arg; //required statements irrelevant to the issue pthread_exit(NULL); } void *cli_com(void *pass_arg) { struct thread_arg *con = pass_arg; //required statements irrelevant to the issue pthread_exit(NULL); } int main() { pthread_t inter_com; //necessary code while(1) { th_err_s = pthread_create(&inter_com, NULL, serv_com, (void *)&pass_arg); th_err_c = pthread_create(&inter_com, NULL, cli_com, (void *)&pass_arg); if (th_err_s || th_err_c) { printf("Alert! Error creating thread! Exiting Now!"); exit(-1); } } pthread_exit(NULL); return 1; } 

然后我使用下面的命令在linux中编译上面的代码:

 gcc -o sample sample.c 

它返回了以下错误信息:

 inter.c:(.text+0x374): undefined reference to `pthread_create' inter.c:(.text+0x398): undefined reference to `pthread_create' collect2: ld returned 1 exit status 

我该怎么做才能正确编译这个文件。 我相信这是没有语法错误或任何东西,因为当我评论了一切在循环内的一切,程序编译正确,我证实了pthread_create语法是正确的。 我必须发出一些其他命令来编译文件吗?

编辑:在上面的代码中创build两个线程是否有任何问题? 程序正在运行时退出并显示错误消息。 什么是可能的问题,我该如何解决? 提前致谢。

尝试这样做:

 gcc -lpthread sample.c 

要么

 gcc -pthread sample.c 

以上2个命令将直接创建可执行文件a.out

编辑后回答:

1)等待两个线程使用调用加入主线程

 int pthread_join(pthread_t thread, void **value_ptr); 

2)用不同的ID创建两个线程

3)如果可以的话,还应该避免从main()调用pthread_exit,尽管这样做没有任何危害

4)你正在调用pthread_create while(1)这将创建无限的线程..我不知道你想达到什么。

编译时链接到pthread库

gcc -o sample -lpthread sample.c

我自己也不太确定,但我会认为你可以做类似的事情

 pthread_t inter_com, inter_com2; 

 th_err_s = pthread_create(&inter_com, NULL, serv_com, (void *)&pass_arg); th_err_c = pthread_create(&inter_com2, NULL, cli_com, (void *)&pass_arg); 

我认为它应该给你2个线程的ID。 但是在线程之间共享变量等时要小心。 但很高兴你自己解决了。