Programme QT ne reconnait les drivers MYSQL
-
wrote on 22 Oct 2019, 08:45 last edited by
Bonjour,
Je reprends le travail d'un ancien salarié de ma boite. L'ancien salarié a créer un OS grâce à Yocto pour un ARM.
Sur cet OS, il y a QT5.6.3 d'installé. Le programme QT est compilé sur un PC avec le SDK adéquat. Le fichier binaire de Qt après unqmake
et unmake
est exécuté sur l'ARM.#include <QtSql> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << QSqlDatabase::drivers(); }
Lorsque j’exécute ce code sur le PC j'ai :
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
Mais lorsque je l'exécute sur l'ARM je n'ai rien :()
Sur l'ARM, dans mon
/usr/lib/qt5/plugins
j'ai :audio iconengines platforminputcontexts playlistformats xcbglintegrations bearer imageformats platforms qmltooling generic mediaservice platformthemes
Et même si je rajoute la librairie
sqldrivers
avec les fichierslibqsqlite.so libqsqlmysql.so libqsqlodbc.so libqsqlpsql.so
audio iconengines platforminputcontexts playlistformats xcbglintegrations bearer imageformats platforms qmltooling generic mediaservice platformthemes sqldrivers
Le programme fait la même chose.
Merci par avance.
-
Bonjour,
Je reprends le travail d'un ancien salarié de ma boite. L'ancien salarié a créer un OS grâce à Yocto pour un ARM.
Sur cet OS, il y a QT5.6.3 d'installé. Le programme QT est compilé sur un PC avec le SDK adéquat. Le fichier binaire de Qt après unqmake
et unmake
est exécuté sur l'ARM.#include <QtSql> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << QSqlDatabase::drivers(); }
Lorsque j’exécute ce code sur le PC j'ai :
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
Mais lorsque je l'exécute sur l'ARM je n'ai rien :()
Sur l'ARM, dans mon
/usr/lib/qt5/plugins
j'ai :audio iconengines platforminputcontexts playlistformats xcbglintegrations bearer imageformats platforms qmltooling generic mediaservice platformthemes
Et même si je rajoute la librairie
sqldrivers
avec les fichierslibqsqlite.so libqsqlmysql.so libqsqlodbc.so libqsqlpsql.so
audio iconengines platforminputcontexts playlistformats xcbglintegrations bearer imageformats platforms qmltooling generic mediaservice platformthemes sqldrivers
Le programme fait la même chose.
Merci par avance.
wrote on 22 Oct 2019, 08:53 last edited by@nikoPol Bonjour, une première chose serait de vérifier que l'installation de Qt a été faite avec les plugins SQL et qu'il est possible de les charger.
Pour cela, il faut lancer le programme avec
QT_DEBUG_PLUGINS=1
.
Par exemple, si le programme se nomme sqltest :QT_DEBUG_PLUGINS=1 ./sqltest
De cette façon, le framework Qt va écrire sur la sortie standard tout ce qu'il est capable de trouver et charger comme plugin.
-
wrote on 22 Oct 2019, 09:11 last edited by
Bonjour,
Tout d'abord merci de votre réponse.
J'obtiens :
root@machine-am335x-evmsk:~# QT_DEBUG_PLUGINS=1 ./Projet QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5/plugins/sqldrivers" ... QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() checking directory path "/home/root/sqldrivers" ... QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlite.so" QElfParser: '/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlmysql.so" QElfParser: '/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlodbc.so" QElfParser: '/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlpsql.so" QElfParser: '/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin ()
Que faire ?
-
Bonjour,
Tout d'abord merci de votre réponse.
J'obtiens :
root@machine-am335x-evmsk:~# QT_DEBUG_PLUGINS=1 ./Projet QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5/plugins/sqldrivers" ... QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so" QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture) "'/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() checking directory path "/home/root/sqldrivers" ... QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlite.so" QElfParser: '/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlmysql.so" QElfParser: '/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlodbc.so" QElfParser: '/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)" not a plugin QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlpsql.so" QElfParser: '/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture) "'/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)" not a plugin ()
Que faire ?
wrote on 22 Oct 2019, 09:21 last edited by KroMignon@nikoPol Bonjour, c'est pourtant simple, vous avez installé des plugins qui sont pas les bons... Je pense que vous avez copié les plugins de votre station de travail (certainement x86) sur votre cible (qui est un processeur ARM).
Il vous faut compiler les plugins SQL pour votre cible, donc mettre à jour votre image Yocto et installer la nouvelle image sur votre cible.
-
wrote on 22 Oct 2019, 09:27 last edited by
Ok, je vous remercie.
Il n'y a pas d'autre moyen d'avoir les librairies dans le format nécessaire :ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV)
? -
Ok, je vous remercie.
Il n'y a pas d'autre moyen d'avoir les librairies dans le format nécessaire :ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV)
?wrote on 22 Oct 2019, 10:13 last edited by KroMignon@nikoPol said in Programme QT ne reconnait les drivers MYSQL:
Il n'y a pas d'autre moyen
Non, il faut compiler les drivers pour votre cible avec les paramètres adéquats, soit directement à partir de Yocto, soit "à la main", à partir des sources de Qt.
Peut-être que ce lien pourra vous être utile: https://www.udoo.org/forum/threads/solved-how-to-use-sql-model-with-qt5-layer.5136/
Désolé, je n'ai que des connaissances de base concernant Yocto... Et ca fait bien 3 ans que je ne l'ai plus mis en oeuvre!
3/6