Programme QT ne reconnait les drivers MYSQL
-
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.
-
@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.
-
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 ?
-
@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.
-
@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!