Название: [РЕШЕНО]QMYSQL Дравер Qt5.5
Отправлено: BuRn от Сентябрь 08, 2015, 10:54
Доброе утро! Подскажите, куда копнуть. Пробую загрузить драйвер, говорит следующее: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QMYSQL QMYSQL3 QSQLITE QPSQL QPSQL7 Сам драйвер в папке лежит, но ldd показывает следующее: linux-vdso.so.1 => (0x00007ffdb47b7000) libmysqlclient_r.so.16 => not found libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa8b665f000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa8b6426000) libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa8b620c000) libssl.so.10 => not found libcrypto.so.10 => not found libQt5Sql.so.5 => /home/burn/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007fa8b5fcc000) libQt5Core.so.5 => /home/burn/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007fa8b5887000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa8b5669000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa8b5365000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa8b505f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa8b4e49000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa8b4a84000) libicui18n.so.54 => /home/burn/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.54 (0x00007fa8b4616000) libicuuc.so.54 => /home/burn/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.54 (0x00007fa8b4268000) libicudata.so.54 => /home/burn/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.54 (0x00007fa8b283e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa8b263a000) libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fa8b2438000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa8b2230000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fa8b1f28000) /lib64/ld-linux-x86-64.so.2 (0x00007fa8b6a8a000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa8b1cea000)
Пробовал создать ссылки на библиотеки, которые => not found, результат аналогичен.Решил дальше не заморачиваться со ссылками, собрал драйвер вручную, все собралось. На новой библиотеке ldd уже не показывает таких штук: => not found, там все ок. Подкладываю собранную библиотеку в папку с плагинами, за место дистрибутивной библиотеки, получаю аналогичный результат. Куда копнуть, складывается ощущение что просто не хватает какого-то пакета ?
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: Aleksey_A от Сентябрь 08, 2015, 11:10
libmysqlclient_r.so.16 => not found Видимо не стоит пакет mysql-client (в вашей системе может по другому называться)
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: BuRn от Сентябрь 08, 2015, 11:17
libmysqlclient_r.so.16 => not found Видимо не стоит пакет mysql-client (в вашей системе может по другому называться) Вы внимательно почитали ? Я же написал что пересобрал драйвер и все ок, все есть, просто другая версия
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: Aleksey_A от Сентябрь 08, 2015, 12:32
Вы пересобрали драйвер, но клиентские библиотеки libmysqlclient.so*, которые требуется для его работы, видимо, не находится в PATH. Кроме самого драйвера (libqsqlmysql.so) нужны еще и библиотеки клиента MySQL.
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: BuRn от Сентябрь 08, 2015, 12:51
Вы пересобрали драйвер, но клиентские библиотеки libmysqlclient.so*, которые требуется для его работы, видимо, не находится в PATH. Кроме самого драйвера (libqsqlmysql.so) нужны еще и библиотеки клиента MySQL.
Опять, не в этом причина: linux-vdso.so.1 => (0x00007fff47fb5000) libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f0848267000) libQt5Sql.so.5 => /home/burn/Qt/5.5/gcc_64/lib/libQt5Sql.so.5 (0x00007f0848027000) libQt5Core.so.5 => /home/burn/Qt/5.5/gcc_64/lib/libQt5Core.so.5 (0x00007f08478e2000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f08475de000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0847219000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f0847000000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0846dfc000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0846bde000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f08468d8000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f08466c2000) libicui18n.so.54 => /home/burn/Qt/5.5/gcc_64/lib/libicui18n.so.54 (0x00007f0846254000) libicuuc.so.54 => /home/burn/Qt/5.5/gcc_64/lib/libicuuc.so.54 (0x00007f0845ea6000) libicudata.so.54 => /home/burn/Qt/5.5/gcc_64/lib/libicudata.so.54 (0x00007f084447c000) libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f084427a000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f0844072000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f0843d6a000) /lib64/ld-linux-x86-64.so.2 (0x00007f08489b1000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f0843b2c000)
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: Aleksey_A от Сентябрь 08, 2015, 13:37
Попробуйте может такой вариант: В main.cpp поставить принудительно пути поиска библиотек в каталоге бинарника и в подкаталоге sqldrivers #include "mainwindow.h" #include <QApplication> #include <QDir>
int main(int argc, char *argv[]) { QApplication a(argc, argv);
QString binaryDir = QCoreApplication::applicationDirPath(); QStringList paths; paths << QDir::toNativeSeparators(binaryDir); paths << QDir::toNativeSeparators(binaryDir + "/sqldrivers"); QCoreApplication::setLibraryPaths(paths);
MainWindow w; w.show();
return a.exec(); } В каталог бинарника скопировать libmysqlclient*, в каталог sqldrivers - сам драйвер, libqsqlmysql.so. Как-то так: (http://s017.radikal.ru/i432/1509/c0/cb78c4f5c03d.png) (Накидал по быстрому - вроде нет ошибок, с MySQL соединяется)
Название: Re: QMYSQL Дравер Qt5.5
Отправлено: BuRn от Сентябрь 08, 2015, 14:22
Спасибо! Дело действительно было видимо в PATH. Хотя достаточно подложить сам драйвер в папку с бинарем и добавить пути. Но теперь нужно докопаться до конца, в случае если в QCoreApplication::libraryPaths(); находится это: ("/home/burn/Qt/5.5/gcc_64/plugins", "/home/burn/build-untitled8-Desktop_Qt_5_5_0_GCC_64bit2-Debug"), то я получаю ошибку загрузки драйвера, хотя драйвер лежит в папке с бинарем, но если я перетираю эти пути и оставляю только ("/home/burn/build-untitled8-Desktop_Qt_5_5_0_GCC_64bit2-Debug"), то загружается все успешно. Честно сказать как-то не понятно UPD:Такая ситуация возникла в связи с тем, что старый драйвер я не убрал с папки, просто переименовал его, т.е. в папке /home/burn/Qt/5.5/gcc_64/plugins лежало два драйвера, старый(у которого проблемы с библиотеками) и новый, в котором нет проблем, и видимо брался как раз таки все же старый
Название: Re: [РЕШЕНО]QMYSQL Дравер Qt5.5
Отправлено: Aleksey_A от Сентябрь 08, 2015, 14:36
Да не за что. Хотя и правда интересно, как после переименования грузился старый драйвер? UPDATE: А причина возможно в переименовании все-таки (как ни странно). Положил 2 драйвера, тот, что меньше по размеру - плохой. При переименовании "слева" - не работает, грузится плохой драйвер. При переименовании "справа" - все ОК. Видимо, как то странно идет поиск драйвера, кажется грузится первый попавшийся драйвер, оканчивающийся на *libqsqlmysql.so. (http://i058.radikal.ru/1509/6f/7ad6e61581e5.png)(http://s017.radikal.ru/i423/1509/bb/6241822050a2.png) З.Ы. Неожиданно... Надо запомнить на будущее, может еще что-то так же не будет грузится :)
|