Попробуйте:
gcc -pthread
вместо -lpthread
. Разница значительная, я считаю. Последний связывается с libpthread
, первый связывается с libpthread и множеством других вещей!
sem_wait
является частью librt, так что вы также можете использовать gcc -lrt
, но -pthread
делает это для вас (и всего остального!).