链接器错误:对符号'pthread_rwlock_trywrlock @@ GLIBC_2.2.5'的未定义引用

时间:2013-04-27 22:37:41

标签: c++ qt gcc4.7

我一直在开发CentOS,Qt 4.7和GCC 4.4

我刚刚安装了包含GCC 4.7.2的Red Hat Developer Toolset 1.1,在make结束时,我收到了错误

/usr/bin/ld: ../../bin/Solo: undefined reference to symbol 'pthread_rwlock_trywrlock@@GLIBC_2.2.5'
/usr/bin/ld: note: 'pthread_rwlock_trywrlock@@GLIBC_2.2.5' is defined in DSO /lib64/libpthread.so.0 so try adding it to the linker command line
/lib64/libpthread.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

我猜测Qt线程正在引用它。我该如何解决?

5 个答案:

答案 0 :(得分:14)

您希望使用-pthread进行编译,这不仅仅是与libpthread链接:

  

使用pthreads库添加对多线程的支持。这个              option为预处理器和链接器设置标志。

答案 1 :(得分:5)

您只需将CONFIG += thread添加到.pro文件中。

答案 2 :(得分:4)

阅读说明:尝试将/lib64/libpthread.so.0添加到Makefile(-lpthread命令后gcc/lib64/libpthread.so.0ld(或gcc -shared之后})),或类似LIB += -lpthread的东西,如果在某处有这样的定义。

另请参阅:Adding external library into Qt Creator projecthttp://www.qtcentre.org/threads/39144-How-to-add-a-lib-to-a-qt-project

顺便说一句,发布你的Makefile,这样有人就可以指向确切的行了。

答案 3 :(得分:0)

在我的小笔记本电脑Linux中(我有一堆混合的图书馆), 我只需要添加

LDFLAGS=-lpthread

在configure命令参数的末尾。

之后,make完美地完成了它的工作(使用现有的库)。

答案 4 :(得分:0)

我收到类似的“链接器错误:未定义符号引用”错误,试图在FreeBSD 12上编译并安装Python-3.7.2。

/usr/bin/ld: error: undefined symbol: _Py_GetGlobalVariablesAsDict
/usr/bin/ld: error: undefined symbol: _PyCoreConfig_AsDict
/usr/bin/ld: error: undefined symbol: _PyMainInterpreterConfig_AsDict

通过直接传递LDFLAGS=-lpthread来构成lang / python37或添加到/etc/make.conf来解决。 如果使用portmaster进行安装/更新,请使用-m进行辩论,例如portmaster -a -m 'LDFLAGS=-lpthread'