===我本想利用QTcreator连接数据库,然后交叉编译,在运行到arm板子上面,由于Qtcreator的版本是4.8.5,它不像QT5版本集成了很多kit或者编译工具gcc,所以,在使用QTcreator4-8-5连接mysql时候,总是出现QMYSQL驱动加载不上,其原因是因为对应的文件夹中没有合适的驱动,在网上看了很多文章,说自己要去找源码重新编译mysql驱动,我在折腾了很久之后,还是没有成功,但是我自己知道问题出在哪里.
===这里其实主要看你的Qt的gcc中的…plugins/sqldrivers中是否含有libqsqlmysql.so文件,使用你要先去你安装的qt(gcc)路径里面 ls一下,看看是否含有libqsqlmysql.so文件,
要是你都连接不上sql的话,一般都是没有,(我这里是我已经复制过来的,是从)
ma@MJ:/soft_ma/gcc4.8/qt-everywhere-opensource-src-4.8.5/plugins/sqldrivers$ ls
libqsqlite.so libqsqlmysql.so
===你可以使用这个命令locate libqsqlmysql.so去查看是否含有该文件
majun@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/include/QtSql$ locate libqsqlmysql.so
/soft_majun/Qt4.2/4.2.2/lib/Qt/plugins/sqldrivers/libqsqlmysql.so
/soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/libqsqlmysql.so
/soft_majun/Qt5.11.0/Tools/QtCreator/lib/Qt/plugins/sqldrivers/libqsqlmysql.so
/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/plugins/sqldrivers/libqsqlmysql.so
/soft_majun/qt_softwar4.7/qtcreator-4.7.0/lib/Qt/plugins/sqldrivers/libqsqlmysql.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers/libqsqlmysql.so
/usr/local/Trolltech/Qt-4.8.5/plugins/libqsqlmysql.so
这些都是我电脑里面的libqsqlmysql.so文件的位置,你要注意复制对应的版本问题
===如果有这个文件,那么你需要执行这一步,查看一下这个文件的所依赖的一些关系是否都是正确的
ma@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/plugins/sqldrivers$ ldd libqsqlmysql.so
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libQt5Sql.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqsqlmysql.so)
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libQt5Sql.so.5: version `Qt_5' not found (required by ./libqsqlmysql.so)
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.11' not found (required by ./libqsqlmysql.so)
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqsqlmysql.so)
./libqsqlmysql.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by ./libqsqlmysql.so)
//看我这里的前面几个都是有问题的,使用我这个sql驱动使用不了,
linux-vdso.so.1 => (0x00007ffcaabc3000)
libQt5Sql.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Sql.so.5 (0x00007f660d66e000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f660cdbb000)
libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f660c65b000)
//上面的这个之前也是找不到的,他提示 libmysqlclient.so.18 not found,
我是下在https://pkgs.org/download里面搜索下载的一个deb包之后,安装了就解决了
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f660c2d9000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f660bfd0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f660bdba000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f660b9f0000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f660b7d6000)
libicui18n.so.55 => /usr/lib/x86_64-linux-gnu/libicui18n.so.55 (0x00007f660b374000)
libicuuc.so.55 => /usr/lib/x86_64-linux-gnu/libicuuc.so.55 (0x00007f660afe0000)
libpcre16.so.3 => /usr/lib/x86_64-linux-gnu/libpcre16.so.3 (0x00007f660ad7a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f660ab76000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f660a865000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f660a65d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f660d4a4000)
libicudata.so.55 => /usr/lib/x86_64-linux-gnu/libicudata.so.55 (0x00007f6608ba6000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f6608936000)
===如果你把上面的这些问题都解决了 就像这样:
ma@MJ:/soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers$ ldd libqsqlmysql.so
linux-vdso.so.1 => (0x00007ffcb7ba6000)
libQt5Sql.so.5 => /soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0x00007f207e683000)
libQt5Core.so.5 => /soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0x00007f207df29000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f207dd0c000)
libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f207d7c9000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f207d447000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f207d13e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f207cf28000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f207cb5e000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f207c944000)
libicui18n.so.56 => /soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/./../../lib/libicui18n.so.56 (0x00007f207c4ab000)
libicuuc.so.56 => /soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/./../../lib/libicuuc.so.56 (0x00007f207c0f3000)
libicudata.so.56 => /soft_majun/Qt5.11.0/5.11.0/gcc_64/plugins/sqldrivers/./../../lib/libicudata.so.56 (0x00007f207a710000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f207a50c000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f207a30a000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f2079ff9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f207eade000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2079d89000)
一个问题都没有了 ,你就解决了连接sql的问题了
===由于我电脑上安装了好几个版本的gcc,所以我4-8-5版本的不行之后,直接去试了一下Qt5.5的,结果,能够直接连接sql,用同样的方法,去查看了下Qt5.5下面的对应的文件,发现,没有错误,而且存在,这也可能是它能够运行的原因吧,
这里也推荐一写其他值得看的https://www.cnblogs.com/yongqiang/p/6121515.html
很多是说去安装gcc的目录中的src中找到mysql驱动的源码,然后自己编译一下,在复制到对于的文件夹中,但是我还是没有搞出来,编译的过程中会出现我现在解决不了的问题,手动呜呜~~(>_<)~~
majun@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/src$ cd plugins/sqldrivers/
//先切换到gcc的安装目录的src中的plugins/sqldrivers文件夹中,然后继续下面的操作
majun@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/src/plugins/sqldrivers$ ls
db2 ibase Makefile mysql mysql.copy oci odbc psql qsqldriverbase.pri README sqldrivers.pro sqlite sqlite2 sqlite_symbian symsql tds
majun@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/src/plugins/sqldrivers$ cd mysql
majun@MJ:/soft_majun/gcc4.8/qt-everywhere-opensource-src-4.8.5/src/plugins/sqldrivers/mysql$ ls
main.cpp Makefile mysql.pro README
这里可以看到上面的一些源码,这里就需要用对应的qmake编译一下,
(可以使用qmake -v 查询下当前使用的qmake是哪个版本)有可能找不到mysql.h
这个头文件,可以百度看看怎么解决的~~~~(>_<)~~~~
虽然没有把它搞出来,但是知道了问题在哪里,且找到了Qt5.5能够连接数据库的方法.仅此记录下,方便以后解决问题
2018年08月27日19:56:00 失败是成功之母 加油!!!