虚拟机版本:UBUNTU  11.10            交叉编译器:友善的4.5.1                  QT版本:4.7.0                mysql版本:5.1.16

开发板:Tiny6410


说实话编译arm版本QT的mysql驱动真是纠结啊,看了大部分资料就没有一个讲全的,最后仔细想了下就想出来了。先讲讲我遇到的问题:

1.开始自己编译qt的时候的参数是

echo yes| ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon

其中qt默认编译了sqlite的驱动。想要便宜对应ubuntu下qt的mysql驱动只需要进入的编译x86版本的QT的源码文件的/src/plugins/sqldrivers/mysql目录下,首先要查看qmake的版本。因为有的qmake还是保持链接QT3,并没有连接到QT4.  

qmake -v 查看版本:

QMake version 2.01a
Using Qt version 4.7.0 in /usr/local/Trolltech/Qt-4.7.0-x86/lib

若qmake是连接到QT3的,则需要建立软连接ln -s   $QTDIR/bin/qmake        /bin/qmake ,这里QTDIR是指对应qt源码的安装目录。

另外注意对应的平台,这里我解压了两份源码,一份编译x86平台的qt源码,另一份编译ARM平台的qt源码。



首先编译x86平台下的QT的mysql驱动,进入的编译x86版本的QT的源码文件的$QTDIR/src/plugins/sqldrivers/mysql目录下,这里我的$QTDIR=/work/Qt/Qt_packet/qt-everywhere-opensource-src-4.7.0(arm)   ,建议输入绝对路径,这样不容易出错!

在控制台手动输入(千万别复制别人的,要不然就回老是make不过去)

:qmake “INCLUDEPATH  += /usr/local/mysql/include/mysql”“LIBS+= -L/usr/local/mysql/lib/mysql –lmysqlclient_r” mysql.pro   发现生成了Makefile,再make 之后再 make install ,如果make的时候提示没有什么可做的,则先make clean 然后再make 再make install。 接着在$QTDIR/plugins/sqldrivers下 看是否有libqsqlmysql.so驱动,有的话就把他拷贝的安装目录下的对应目录下。这里我是拷贝到:/usr/local/Trolltech/Qt-4.7.0-x86/plugins/sqldrivers下。接着就可以在ubuntu上用QT连接mysql了。

注意:这里/usr/local/mysql/include/mysql”“LIBS+= -L/usr/local/mysql/lib/mysql –lmysqlclient_r” 对应的是x86平台下的mysql。

理解这里就都好办了。然后再编译对应arm平台的qt的mysql驱动。刚开始也是按照上面的步骤,可是qmake “INCLUDEPATH  += /usr/local/mysql/include/mysql”“LIBS+= -L/usr/local/mysql-arm-utf8/lib/mysql –lmysqlclient_r” mysql.pro然后再make的时候老是提示出错。说找不到mysqlclient_r等错误。于是纠结从此开始,浪费了一天的时间。查了大量的资料:后来才发现自己增加的/usr/local/mysql/include/mysql和/usr/local/mysql/lib/mysql –lmysqlclient_r都是对应x86下的mysql并不是对应arm的mysql于是转变思路。


qmake “INCLUDEPATH  += /usr/local/mysql-arm-utf8/include/mysql”“LIBS+= -L/usr/local/mysql-arm-utf8/lib/mysql –lmysqlclient_r” mysql.pro  然后再make 就可以便宜出mysql驱动了。按照上面的步骤把其拷贝的开发板的对应QT的sqldrivers目录下。

可是后来发现不对,arm板还是提示没有驱动。后来有细心想,因为编译arm版本的QT的时候是默认编译sqlite所以可能无法识别,于是打算重新编译一次。于是按照别人的提示,更改

echo yes| ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon -qt-sql-mysql -I/usr/local/mysql/include/mysql -L/usr/local/mysql/lib/mysql 之后一直提示MySQL support cannot be enabled due to functionality tests! 都有点进行不下去了。后来才发现自己加入的qt编译mysql驱动所需的mysql库文件和头文件都是对应x86平台的,并不是arm平台的,于是就改为

echo yes| ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon -qt-sql-mysql -I/usr/local/mysql-arm/include/mysql -L/usr/local/mysql-arm/lib/mysql,顺利编译,再make再make intstall 就编译出对应mysql的qt了,然后把其考贝到arm对应的目录。这里我的目录是/usr/local/Trolltech/arm-Qt-4.7.0下。然后。再进入到QT编译源码目录下,按照上面的方法编译驱动。并把驱动考呗的开发板对应目录下。再运行程序就ok了,再开发板用QT连接mysql的时候可能会提示没有找到驱动,这里就需要自己做一个软连接。

ln -s /usr/local/Trolltech/arm-Qt-4.7.0/plugins/sqldrivers/libqsqlmysql.so   /usr/lib/libqsqlmysql.so。就大功告成了!





Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐