使用 -lpthread、G++ 编译器错误"undefined reference to "信号量调用(如"sem_open"

with -lpthread, g++ compiler error, "undefined reference to " semaphore calls such as `sem_open'

本文关键字:调用 信号量 open sem to reference -lpthread G++ 编译器 undefined 错误      更新时间:2023-10-16

我是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 才能工作,但是我可能需要任何其他选项来解决问题吗? 如果不是,我必须如何安装"正确的"pthread库?

感谢您的帮助!

您希望编译选项-pthread(如果您确实使用pthreads)。 如果您只需要这些功能,它们librt请使用-lrt