10

我一直在使用 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线程正在引用它。我该如何解决?

4

5 回答 5

18

您想要编译的-pthread不仅仅是与 libpthread 链接:

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

于 2013-04-28T04:50:05.550 回答
5

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

于 2013-04-28T08:44:15.690 回答
4

阅读注释:尝试添加/lib64/libpthread.so.0到 Makefile (-lpthreadgcc命令之后,或/lib64/libpthread.so.0之后ld(或之后gcc -shared)),或者LIB += -lpthread如果某处有这样的定义。

另请参阅:将外部库添加到 Qt Creator 项目http://www.qtcentre.org/threads/39144-How-to-add-a-lib-to-a-qt-project

顺便说一句,发布您的 Makefile,以便有人能够指出确切的行。

于 2013-04-27T22:53:40.130 回答
1

在我的小型笔记本电脑 Linux 中(我有各种各样的库),我只需要添加

LDFLAGS=-lpthread

在配置命令参数的末尾。

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

于 2016-06-05T14:56:48.867 回答
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'

于 2018-12-27T00:49:22.903 回答