C语言编译时提示undefined reference to sem_wait/post/init等错误的解决办法

情况描述

在Linux环境中编译实现多线程相关的代码时,编译包含头文件 pthread.h 的代码时可能发生以下报错

undefined reference to sem_wait
undefined reference to sem_post
undefined reference to sem_init
undefined reference to pthread_create
undefined reference to pthread_join

在代码中加入了 #include<pthread.h> 仍旧会报错。

解决方法

1、GCC:添加附加指令 -lpthread

示例:
gcc filename.c -lpthread

2、Eclipse:操作方法如下

项目右键 >> propertie s>> C/C++ Build >> Settings >> Tool Settings >>GCC C++ Linker >> Libraries,添加pthread