在嵌入式ARM开发板EasyArm-Imx283下移植使用QT自带的QSqlite
最近开发手头上的周立功的EasyArm-Imx283开发板,需要用到一些数据的存取,由于懒得自己建立文件数据管理体系,于是想到使用QT自带的轻量级数据库QSqlite。
按照相关资料在上位机上进行开发,一切正常,但是在下载到开发板后,直接报错退出,错误提示如下:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
在网上搜索相关问题后,发现按照网上的做法,即使拷贝了sqldrivers目录到板子后,在283板子上也没有效果。
于是只好自行想办法解决了:
1. 重新编译QT
首先, QSqlDatabase: available drivers:
这句提示的冒号后面是空的,表明QT根本就没有识别到有数据库的驱动,很多网上有问题的人后面都有“SQLITE”,“MYSQL”等字段,说明他们的板子是可以识别驱动,只是有别的问题。
不用理会别人的问题,还是从我手里的板子本身入手查找问题,因为板子上的QT库是出厂自带的,所以我并不清楚其编译时使用的命令,因此无法识别驱动有可能是被编译成了不带驱动的形式,或者其他未知的问题。
在qt-everywhere-opensource-src-4.7.3.tar.gz解压目录下,输入./configure -help,有如下的几句话:
-no-sql-<driver> ... Disable SQL <driver> entirely.
-qt-sql-<driver> ... Enable a SQL <driver> in the QtSql library, by default
none are turned on.
-plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to
at run time.
Possible values for <driver>:
[ db2 ibase mysql oci odbc psql sqlite sqlite2 sqlite_symbian tds ]
如果在./configure后面加入-no-sql-<driver>
命令则将禁止driver标明的驱动,-qt-sql-<driver>
将会把对应的驱动直接加载在QtSql库中,-plugin-sql-<driver>
将会把驱动编译为运行时加载的插件。
我为了方便使用了第二条命令,直接把sqlite驱动编译进了QtSql库中,命令为:-qt-sql-sqlite
。
即在周立功《嵌入式Linux开发教程 (上册)》中的移植Qt篇中的configure命令里添加此命令,下面是完整的bulid-qt文件内容,如果没有此文件,在与configure文件同目录下生成一