Linux下使用qmake为Qt项目添加boost库遇pthread链接错误如何解决?
Linux qmake Qt项目引入Boost库及pthread链接报错解决方案
报错说明
你遇到的报错内容如下:
main.o: undefined reference to symbol 'pthread_condattr_setclock@@GLIBC_2.3.3'
/usr/bin/ld: /usr/lib/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
该报错核心原因有两个:
- Boost部分依赖的pthread库未被加入编译链接参数
- Boost库的头文件、库文件路径及模块链接规则未正确配置到Qt工程中
具体配置步骤
直接修改你的Qt项目.pro工程文件,添加以下配置:
- 配置Boost头文件与库文件路径
# 若Boost为系统默认路径安装(apt/yum/dnf安装的默认路径),可省略以下两行 # 自定义路径安装时替换为你实际的Boost安装路径 INCLUDEPATH += /usr/local/include LIBS += -L/usr/local/lib
- 链接你需要用到的Boost模块
# 按需添加实际用到的Boost模块,示例为线程、系统、文件系统模块 LIBS += -lboost_thread -lboost_system -lboost_filesystem
注意:若你安装的Boost多线程模块带mt后缀,将-lboost_thread替换为-lboost_thread-mt即可
- 添加pthread编译链接参数,解决DSO缺失报错
QMAKE_CXXFLAGS += -pthread LIBS += -lpthread
生效操作
- 保存
.pro文件后,执行qmake命令重新生成Makefile - 执行
make重新编译项目即可正常通过
内容的提问来源于stack exchange,提问作者ShellCpp
相关产品推荐
相关产品推荐

