Linux 下编译MySQL驱动:
环境:Qt5.2.1 + MySql5.6.17 + ubuntu12.04
1、下载Mysql5.6.17安装包MySQL-5.6.17-1.linux_glibc2.5.i386.rpm-bundle.tar
2、安装alien工具将rpm包转换成deb:使用命令alien -d x.rpm 生成x.deb
3、mysql安装之后,执行命令:dpkg -l|grep mysql查看安装的mysql组件,要编译mysql驱动下边的组件必须安装:
ii mysql-client 5.6.17-2 MySQL - Client
ii mysql-devel 5.6.17-2 MySQL - Development header files and libraries
ii mysql-server 5.6.17-2 MySQL: a veryfast and reliable SQL database server
4、在qt安装目录mysql驱动源码所在的目录执行如下命令:
qmake"INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql-lmysqlclient_r" mysql.pro
生成makefile文件
5、然后make
make过程中可能出现下列错误:
ers/mysql# make
….....................
-I/home/lhl/Qt5.2.1/5.2.1/gcc/include/QtCore/5.2.1-I/home/lhl/Qt5.2.1/5.2.1/gcc/include/QtCore/5.2.1/QtCore-I/home/lhl/Qt5.2.1/5.2.1/gcc/include/QtCore -I.moc -o .obj/moc_qsql_mysql_p.o.moc/moc_qsql_mysql_p.cpp
rm -f libqsqlmysql.so
g++ -Wl,--no-undefined -Wl,-O1-Wl,-rpath,/home/lhl/Qt5.2.1/5.2.1/gcc -Wl,-rpath,/home/lhl/Qt5.2.1/5.2.1/gcc-Wl,-rpath,/home/lhl/Qt5.2.1/5.2.1/gcc/lib -shared -o libqsqlmysql.so.obj/main.o .obj/qsql_mysql.o .obj/moc_qsql_mysql_p.o -L/usr/lib/mysql -ldl -lrt-Wl,-Bsymbolic-functions -rdynamic -lmysqlclient_r-L/home/lhl/Qt5.2.1/5.2.1/gcc/lib -lQt5Sql -lQt5Core -lpthread
/usr/lib/mysql/libmysqlclient_r.a(my_getsystime.c.o):In function `my_getsystime':
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/mysys/my_getsystime.c:44:undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqlclient_r.a(client_plugin.c.o):In function `do_add_plugin':
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:179:undefined reference to `dlclose'
/usr/lib/mysql/libmysqlclient_r.a(client_plugin.c.o):In function `mysql_client_plugin_deinit':
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:306:undefined reference to `dlclose'
/usr/lib/mysql/libmysqlclient_r.a(client_plugin.c.o):In function `mysql_load_plugin_v':
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:393:undefined reference to `dlopen'
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:422:undefined reference to `dlsym'
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:413:undefined reference to `dlerror'
/export/home/pb2/build/sb_0-11763321-1394831461.01/rpm/BUILD/mysql-5.6.17/mysql-5.6.17/sql-common/client_plugin.c:425:undefined reference to `dlclose'
collect2: ld 返回 1
make: *** [../../../../plugins/sqldrivers/libqsqlmysql.so]错误1
以上错误解决办法:
第一种:可以在第4步生成的makefile文件中添加LIBS +=-lpthread -lrt-ldl 就可以编译通过
第二种:qmake"INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql-lmysqlclient_r" mysql.pro LIBS+=-lpthread -lrt-ldl