Mongodb:加载共享库时出错:libboost_thread.so.1.54.0:>无法打开共享对象文件:没有这样的文件或目录

时间:2015-07-23 08:36:04

标签: c++ linux mongodb qt

我正在尝试将MongoDb与Qt c ++连接起来。当我构建它时没有错误,只有像;

这样的信息
  

: - 1:警告:libboost_system.so.1.54.0,需要   /usr/local/lib/libboost_thread.so,可能与之冲突   libboost_system.so.5

然而,当我试图运行它时说:

  加载共享库时出现

错误:libboost_thread.so.1.54.0:   无法打开共享对象文件:没有这样的文件或目录

这是我的小代码示例,一切看起来都很好。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>
#include <mongo/client/dbclient.h>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    try
    {
        mongo::DBClientConnection c;
        c.connect("localhost");

        qDebug() << "Connected to Mongo";
    }
    catch (mongo::DBException &e)
    {
        qDebug() << "Cannot, Error : " << e.what();
    }

}

MainWindow::~MainWindow()
{
    delete ui;
}

您能否帮我解释为什么我会收到此错误以及如何解决?

编辑:

这也是我的.pro文件;

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = mongodbtest
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

INCLUDEPATH += /usr/local/lib/

LIBS += -pthread \
    -lmongoclient \
    -lboost_thread \
    -lboost_system \
    -lboost_regex

我发现我已经有了libboost_thread.so.1.54.0

  

[mg @ mg-CentOS mg] $ locate libboost_thread.so.1.54.0   /usr/local/lib/libboost_thread.so.1.54.0

1 个答案:

答案 0 :(得分:1)

您的路径中似乎有两倍的boost库,两者似乎都在/usr/local/lib(不好)。

最简单的解决方案是尽可能只使用一组boost库。

否则,通过在特定(非全局)位置安装boost并链接到它(我对qmake并不熟悉),可以实现最佳设置:

INCLUDEPATH  += /path/to/boost/boost_1_54_0/include
QMAKE_LIBDIR += /path/to/boost/boost_1_54_0/lib
LIBS         += -libboost_system.so.1.54.0  # relative link (preferred)
LIBS         += /path/to/boost/boost_1_54_0/lib/libboost_thread.1.54.0.so  # hard link
...