Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 05:42
Оценка:
Доброго времени суток. Пишу базу данных в QT с использованием SQLite и Exaro. Возникла задача вывести отчет созданный в Exaro из приложения QT. Сборка проекта проходит без ошибок и предупреждений, однако приложение не работает, в консоли QT пишет, что приложение завершилось крахом, а в терминале Linux такое сообщение:

error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory


Из-за большого объема исходного кода выкладываю только те его части, которые связаны с Exaro, без них (то есть без Exaro) программа полностью работоспособна. Приложение пишу в QT 5.5.0, платформа Linux. Очень надеюсь на вашу помощь в решении проблемы. Заранее благодарен.

Содержимое pro-файла:
QT       += core gui sql xml script uitools

#здесь лежит библиотека libReport.so
LIBS += -L/usr/local/lib -lReport

#здесь лежат заголовочники exaro и propertyeditor
INCLUDEPATH += /usr/local/include
...


Содержимое файла mainwindow.h
#include <QtWidgets>
#include <QtSql>
#include <QMessageBox>
#include "reportengine.h"
#include "reportinterface.h"
...

//секция private класса MainWindow
private:
    ...
    Report::ReportEngine rep_eng;
    Report::ReportInterface *rep_int;


Содержимое файла mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    rep_int(0)
...

//код кнопки, которая должна выводить отчет
    rep_int=dynamic_cast<Report::ReportInterface *>(rep_eng.loadReport("Report.bdrt"));
    rep_int->setDatabase(db);
    rep_int->exec();


Файл Report.bdrt находится в одной папки с файлом БД и исполняемым файлом программы. Также хочу сказать, что Exaro на компьютере есть и также работает.
qt5 exaro sqlite
Re: Qt5 + SQLite + exaro
От: fdn721  
Дата: 06.11.15 05:49
Оценка:
Здравствуйте, ivan_antonov, Вы писали:

_>
_>error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory
_>


Всё же написано в данной строчке. Что ещё не понятно-то?
Re[2]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 05:51
Оценка:
Здравствуйте, fdn721, Вы писали:

F>Здравствуйте, ivan_antonov, Вы писали:


_>>
_>>error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory
_>>


F>Всё же написано в данной строчке. Что ещё не понятно-то?


Непонятно почему он ее не видит, ведь она там есть.
Отредактировано 06.11.2015 6:22 ivan_antonov . Предыдущая версия . Еще …
Отредактировано 06.11.2015 6:10 ivan_antonov . Предыдущая версия .
Re[3]: Qt5 + SQLite + exaro
От: Skorodum Россия  
Дата: 06.11.15 11:08
Оценка:
Здравствуйте, ivan_antonov, Вы писали:

_>Непонятно почему он ее не видит, ведь она там есть.

Покажи вывод
ldconfig -p | grep Report
Re: Qt5 + SQLite + exaro
От: Skorodum Россия  
Дата: 06.11.15 11:10
Оценка:
Здравствуйте, ivan_antonov, Вы писали:

_>[code]

_>error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory
_>Содержимое pro-файла:
_>
_>#здесь лежит библиотека libReport.so
_>LIBS += -L/usr/local/lib -lReport
_>...
_>


Возможно, не хватает сим линка libReport.so.2.0 -> libReport.so
Re[4]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 11:36
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, ivan_antonov, Вы писали:


_>>Непонятно почему он ее не видит, ведь она там есть.

S>Покажи вывод
S>
ldconfig -p | grep Report


К сожалению эта команда ничего не выводит.
Re[2]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 11:40
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, ivan_antonov, Вы писали:


S>Возможно, не хватает сим линка libReport.so.2.0 -> libReport.so


Символьные ссылки на библиотеку есть, их даже две, libReport.so->libReport.so.2.0, libReport.so.2.0->libReport.so.2.0.0, libReport.so.2.0.0 файл динамической библиотеки.
Re[4]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 11:45
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, ivan_antonov, Вы писали:


_>>Непонятно почему он ее не видит, ведь она там есть.

S>Покажи вывод
S>
ldconfig -p | grep Report


Есть вывод команды
ldconfig -p | grep libReport

    libReport.so.2.0 (libc6,x86-64) => /usr/local/lib/libReport.so.2.0
    libReport.so (libc6,x86-64) => /usr/local/lib/libReport.so
Re[3]: Qt5 + SQLite + exaro
От: Skorodum Россия  
Дата: 06.11.15 11:50
Оценка:
Здравствуйте, ivan_antonov, Вы писали:

_>Символьные ссылки на библиотеку есть, их даже две, libReport.so->libReport.so.2.0, libReport.so.2.0->libReport.so.2.0.0, libReport.so.2.0.0 файл динамической библиотеки.

И где все это находится? Судя по этому
Автор: ivan_antonov
Дата: 06.11.15
ответу не там, где ищутся библиотеки во время запуска приложения.

Самый простой способ временного фикса: добавить путь к библиотекам в переменную окружения LD_LIBRARY_PATH.
Или посмотрите в сторону /etc/ld.so.conf (зависит от дистрибутива).

Вот исчерпывающая информация по вопросу:
Program Library HOWTO
Re[5]: Qt5 + SQLite + exaro
От: Skorodum Россия  
Дата: 06.11.15 11:56
Оценка:
Что-то подозрительно:
ldconfig -p | grep Report

и
ldconfig -p | grep libReport

В данном случае должны давать одинаковый результат...

grep же ищет подстроку.
Re[6]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 12:09
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Что-то подозрительно:

S>
ldconfig -p | grep Report

S>и
S>
ldconfig -p | grep libReport

S>В данном случае должны давать одинаковый результат...

S>grep же ищет подстроку.


Так ведь можно сделать?
ldconfig -p | grep "Report"
        libReport.so.2.0 (libc6,x86-64) => /usr/local/lib/libReport.so.2.0
    libReport.so (libc6,x86-64) => /usr/local/lib/libReport.so
Re[4]: Qt5 + SQLite + exaro
От: ivan_antonov  
Дата: 06.11.15 12:13
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Самый простой способ временного фикса: добавить путь к библиотекам в переменную окружения LD_LIBRARY_PATH.

S>Или посмотрите в сторону /etc/ld.so.conf (зависит от дистрибутива).

S>Вот исчерпывающая информация по вопросу:

S>Program Library HOWTO

С LD_LIBRARY_PATH вроде все нормально:
grep "/usr/local/lib" /etc/ld.so.conf.d/*
/etc/ld.so.conf.d/libc.conf:/usr/local/lib
/etc/ld.so.conf.d/opencv.conf:/usr/local/lib


За ссылку спасибо, буду разбираться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.