我想利用frozenset
广告,因此使用pthread
标志进行编译,但这是我得到的:
-lpthread
我尝试编译的代码如下:
$ g++ -lpthread pseudo_code.cpp
/tmp/cc3mPrvt.o: In function `MyThreadClass::StartInternalThread()':
pseudo_code.cpp:(.text._ZN13MyThreadClass19StartInternalThreadEv[_ZN13MyThreadClass19StartInternalThreadEv]+0x26): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
答案 0 :(得分:1)
可能您需要这样做:
extern "C" {
#include <pthread.h>
}
这告诉编译器此标头用于C库,并且不应使用C ++名称修饰。
您还需要使用-pthread
而不是-lpthread
,因为pthread库是特殊的,并且GCC希望明确地知道您正在尝试使用线程,而不仅仅是链接到libpthread。
答案 1 :(得分:0)
请尝试使用该命令进行编译。
g++ pseudo_code.cpp -lpthread
在命令中写入此选项的位置有所不同;的 链接器按顺序搜索和处理库和目标文件 他们被指定。因此,foo.o -lz bar.o在之后搜索库z 文件foo.o但在bar.o之前。如果bar.o引用z中的函数,则那些 函数可能无法加载。
对我有用。似乎需要在源文件之后指定库,以便在库中搜索符号。