我一直在开发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线程正在引用它。我该如何解决?
答案 0 :(得分:14)
您希望使用-pthread
进行编译,这不仅仅是与libpthread链接:
使用pthreads库添加对多线程的支持。这个 option为预处理器和链接器设置标志。
答案 1 :(得分:5)
您只需将CONFIG += thread
添加到.pro
文件中。
答案 2 :(得分:4)
阅读说明:尝试将/lib64/libpthread.so.0
添加到Makefile(-lpthread
命令后gcc
或/lib64/libpthread.so.0
后ld
(或gcc -shared
之后})),或类似LIB += -lpthread
的东西,如果在某处有这样的定义。
另请参阅:Adding external library into Qt Creator project和http://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'