2015-12-22 6 views
1

Я пишу программу в Qt, и у меня есть небольшая проблема. Это компилируется нормально, но у меня есть это:QSqldriver не загружен, но доступен

QSqlDatabase: QMYSQL driver not loaded 
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7 

Когда я использую ldd libqsqlmysql.so в /opt/Qt/5.5/gcc_64/plugins/sqldrivers, я получаю это:

./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16: version `libmysqlclient_16' not found (required by ./libqsqlmysql.so) 
linux-vdso.so.1 => (0x00007ffe02bb3000) 
libmysqlclient_r.so.16 => /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16 (0x00007fa3f8431000) 
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa3f8217000) 
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa3f7fde000) 
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa3f7dc4000) 
libssl.so.10 => not found 
libcrypto.so.10 => not found 
libQt5Sql.so.5 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007fa3f7b83000) 
libQt5Core.so.5 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007fa3f743d000) 
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa3f721e000) 
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa3f6e9c000) 
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa3f6b94000) 
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa3f697c000) 
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa3f65b2000) 
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa3f63ae000) 
libicui18n.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.54 (0x00007fa3f5f3f000) 
libicuuc.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.54 (0x00007fa3f5b91000) 
libicudata.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.54 (0x00007fa3f4166000) 
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fa3f3f64000) 
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa3f3d5c000) 
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fa3f3a4d000) 
/lib64/ld-linux-x86-64.so.2 (0x0000558b780a6000) 
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa3f37df000) 

Мой код:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
db.setHostName("hostname"); 
db.setDatabaseName("name"); 
db.setUserName("username"); 
db.setPassword("password"); 

В чем проблема?

Edit: Я попытался установить OpenSSL, но когда я писал sudo apt-get install openssl я получил это:

Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
openssl is already the newest version. 
openssl set to manually installed. 
The following packages were automatically installed and are no longer required: 
    kde-l10n-engb kde-l10n-pl libdlrestrictions1 libkdecore5 
    linux-headers-4.2.0-16 linux-headers-4.2.0-16-generic linux-headers-4.2.0-18 
    linux-headers-4.2.0-18-generic linux-headers-4.2.0-19 
    linux-headers-4.2.0-19-generic linux-image-4.2.0-16-generic 
    linux-image-4.2.0-18-generic linux-image-4.2.0-19-generic 
    linux-image-extra-4.2.0-16-generic linux-image-extra-4.2.0-18-generic 
    linux-image-extra-4.2.0-19-generic linux-signed-image-4.2.0-16-generic 
    linux-signed-image-4.2.0-18-generic linux-signed-image-4.2.0-19-generic 
Use 'apt-get autoremove' to remove them. 
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

Следующая редактировать: хорошо, я снова использовать LDD libqmysql.so и я получил это:

./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16: version `libmysqlclient_16' not found (required by ./libqsqlmysql.so) 
linux-vdso.so.1 => (0x00007ffdb25e9000) 
libmysqlclient_r.so.16 => /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16 (0x00007f54d5b3f000) 
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f54d5925000) 
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f54d56ec000) 
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f54d54d2000) 
libssl.so.10 => /lib/x86_64-linux-gnu/libssl.so.10 (0x00007f54d5269000) 
libcrypto.so.10 => /lib/x86_64-linux-gnu/libcrypto.so.10 (0x00007f54d4e26000) 
libQt5Sql.so.5 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007f54d4be6000) 
libQt5Core.so.5 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007f54d44a0000) 
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f54d4281000) 
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f54d3eff000) 
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f54d3bf7000) 
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f54d39df000) 
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f54d3615000) 
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f54d3411000) 
libicui18n.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.54 (0x00007f54d2fa2000) 
libicuuc.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.54 (0x00007f54d2bf4000) 
libicudata.so.54 => /opt/Qt/5.5/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.54 (0x00007f54d11c9000) 
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f54d0fc7000) 
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f54d0dbf000) 
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f54d0aaf000) 
/lib64/ld-linux-x86-64.so.2 (0x000055d80d1dc000) 
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f54d0842000) 
+0

Относно ваш откат: трейлинг-предложения являются ненужным шумом, не внося существенной информации в вопрос. И поскольку это так, ваш вопрос является грамматически точным и понятным. – Downvoter

+1

'libssl.so.10 => not found' и' libcrypto.so.10 => not found' install openssl в вашей системе и повторите попытку – Danh

+0

@ mcjulcz44 Как вы установили библиотеку для клиента mysql? Я вижу эту ошибку '/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16: version 'libmysqlclient_16' не найден (требуется ./libqsqlmysql.so)' – Danh

ответ

0
sudo apt-get install openssl 
cd /lib/x86_64-linux-gnu 
sudo ln -s libssl.so.1.0.0 libssl.so.10 
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10 

А также сообщите дистрибьютору Qt об изменении компоновщика.

ПРИМЕЧАНИЕ

Проблема заключалась в том, что существует несоответствие между Qt и вашего libmysqlclient. Сейчас мы можем установить только с помощью libmysqlclient18

apt-get install libmysqlclient18 

И это не будет совместимости с установкой Qt, потому что она требует версии 16.

Я бы порекомендовал вам обновить установку Qt

+0

Это работает или нет? Сообщите им, где вы загрузили этот двоичный код Qt – Danh

+0

Это не работает. Как я могу сообщить им? –

+0

QSqlDatabase: драйвер QMYSQL не загружен QSqlDatabase: доступные драйверы: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7 –

Смежные вопросы