与-lpthread,g ++编译器错误,“未定义的引用”信号量调用,如“sem_open”

我是posix线程库的新手,我尝试从一个教程中编译示例代码:

g++ -lpthread agreement.cpp -o agreement 

但是我无法编译代码,并得到以下错误信息:

 a3q2.cpp:(.text+0x7e): undefined reference to `sem_open' a3q2.cpp:(.text+0xab): undefined reference to `sem_wait' a3q2.cpp:(.text+0x290): undefined reference to `sem_post' a3q2.cpp:(.text+0x2af): undefined reference to `sem_close' a3q2.cpp:(.text+0x2bb): undefined reference to `sem_unlink' collect2: ld returned 1 exit status make: *** [a3q2_exe] Error 1 

我知道-lpthread需要编译工作,但是有没有其他的select,我可能需要解决这个问题? 如果不是,我该如何安装“正确的”pthread库?

谢谢你的帮助!

你想要的编译选项-pthread (如果你真的使用pthreads)。 如果你只是需要这些函数,它们在librt所以使用-lrt