编译QT的ODBC驱动
前期准备:
-
银河麒麟V10 arm 64位操作系统;
-
QT5.9.9版本已安装;
-
达梦数据库DM8已安装;
-
UnixOdbc驱动已安装。
编译QT的odbc驱动
1.修改qsqldriverbase.pri
-
进入QT源码目录修改qsqldriverbase.pri 文件,目录:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri,可以使用vi或vim修改,也可使用文档编辑器进行修改;
//qsqldriverbase.pri目录位置 root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers# pwd /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers
-
修改include内容,将qtsqldrivers-config.pri替换为configure.pri,注意:有些教程是修改成…/sqldrivers/configure.pri,自己试了编译后找不到路径,还是按下面的修改编译成功,qtsqldrivers-config.pri和configure.pri本身在同一级目录;
QT = core core-private sql-private # For QMAKE_USE in the parent projects. #include($$shadowed($$PWD)/qtsqldrivers-config.pri) include($$shadowed($$PWD)/configure.pri) PLUGIN_TYPE = sqldrivers load(qt_plugin) DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
2.修改odbc.pro文件
-
修改QT源码目录odbc.pro文件,注释QMAKE_USE += odbc,目录:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc,可以使用vi或vim修改,也可使用QCreator进行修改;
//odbc.pro目录位置 root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# pwd /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# ll 总用量 124 drwxrwxrwx 2 adminyw adminyw 4096 12月 3 2019 ./ drwxrwxrwx 11 adminyw adminyw 4096 1月 2 10:13 ../ -rwxrwxrwx 1 adminyw adminyw 2592 12月 3 2019 main.cpp* -rwxrwxrwx 1 adminyw adminyw 38 12月 3 2019 odbc.json* -rwxrwxrwx 1 adminyw adminyw 236 12月 3 2019 odbc.pro* -rwxrwxrwx 1 adminyw adminyw 93155 12月 3 2019 qsql_odbc.cpp* -rwxrwxrwx 1 adminyw adminyw 4253 12月 3 2019 qsql_odbc_p.h* -rwxrwxrwx 1 adminyw adminyw 199 12月 3 2019 README*
-
修改odbc.pro文件;
root@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc# vi odbc.pro
3.编译odbc驱动
-
查找INCLUDEPATH 和 LIBS 的目录位置,这两个位置是UnixOdbc安装时的两个路径,我的路径在/usr/local/unixodbc/include和/usr/local/unixodbc/lib;
-
在odbc.pro目录下执行qmake,如果qmake已添加到环境变量,可以直接使用qmake,如果没有添加,可使用/usr/local/Qt-5.9.9-release/bin/qmake,该路径是我安装QT的目录,qmake执行成功后,再执行make -j4,会在/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/plugins/sqldrivers目录下生成libqsqlodbc.so;
//QT安装路径 root@adminyw-pc:/usr/local/Qt-5.9.9-release/bin# pwd /usr/local/Qt-5.9.9-release/bin //在odbc.pro目录下执行以下语句 /* qmake "INCLUDEPATH+=/usr/local/unixodbc/include" "LIBS+=-L/usr/local/unixodbc/lib -lodbc" ./odbc.pro qmake:/usr/local/Qt-5.9.9-release/bin/qmake INCLUDEPATH和LIBS:UnixOdbc安装路径 ./odbc.pro:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc/odbc.pro*/ //执行qmake adminyw@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc$ qmake "INCLUDEPATH+=/usr/local/unixodbc/include" "LIBS+=-L/usr/local/unixodbc/lib -lodbc" ./odbc.pro //执行make -j4 adminyw@adminyw-pc:/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/src/plugins/sqldrivers/odbc$ make -j4 rm -f libqsqlodbc.so g++ -Wl,--no-undefined -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../../lib -shared -o libqsqlodbc.so .obj/qsql_odbc.o .obj/main.o .obj/moc_qsql_odbc_p.o -L/usr/local/unixodbc/lib -lodbc -L/home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/lib -lQt5Sql -lQt5Core -lpthread mv -f libqsqlodbc.so /home/Qt_Source/qt-everywhere-opensource-src-5.9.9/qtbase/plugins/sqldrivers/libqsqlodbc.so
4.拷贝libqsqlodbc.so
拷贝libqsqlodbc.so到/usr/local/Qt-5.9.9-release/plugins/sqldrivers目录下,该目录是QT安装目录,至此QODBC的动态库编译完成。