最近用Qt开发一个小项目,项目中调用mysql数据库。但调用失败。
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
但在执行: sudo qmake 时又报错:
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or director
再从网上查询,发现qt开发环境有一个默认执行目录设置。
即在目录/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/下有个default.conf配置文件,修改配置文件,即可改变默认的qmake路径。
原来为:
/usr/lib/x86_64-linux-gnu/qt4/bin /usr/lib/x86_64-linux-gnu
修改为:
/opt/Qt5.6.0/5.6/gcc_64/bin /opt/Qt5.6.0/5.6/gcc_64再执行:
sudo qmake
成功执行Qt5.6.0下面的qmake,生产Makefile文件。
通过sudo make编译mysql.pro项目生成libqsqlmysql.so。同样出错:
/usr/bin/ld: cannot find -lmysqlclient_r即找不到libmysqlclient_r.so文件。
经检查,发现安装mysql时,所有的libmysqlclient文件都安装在/usr/lib/x86_64-linux-gnu/下面,我安装的最新版本为libmysqlclient.so.20。
检查qmake生成的Makefile文件,发现命令 -rdynamic -L/usr/lib64/mysql -lmysqlclient_r,即在/usr/lib64/mysql目录下找libmysqlclient_r.so文件。
所以通过如下指令创建链接:
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 /usr/lib64/mysql/libmysqlclient_r.so