Ubuntu 17.1 + Qt5.10 源码编译ODBC库
(2018-02-02 19:09:02)
标签:
qtunixodbclibqsqlodbc.so |
分类: Qt/Go |
安装Qt编译所需程序
$ sudo apt install build-essential
$ sudo apt install freeglut3-dev
安装unixODBC头文件及库文件
官网下载源文件:
ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.5.tar.gz
找到下载的文件所在目录,解压缩
$ cd ~/Downloads
$ tar xvf unixODBC-2.3.5.tar.gz
$ cd unixODBC-2.3.5
编译,指定安装到/usr/local/unixODBC目录中
$ ./configure --prefix /usr/local/unixODBC
$ make
$ sudo make install
提示有ini文件由于目录不存在而无法创建,再执行一次
$ sudo make
install
odbc.ini和odbcinst.ini在/usr/local/unixODBC/etc目录中touch成功。
Qt编译odbc动态库源程序
$ cd
~/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers
$ cp configure.pri qtsqldrivers-config.pri
$ cd odbc
如下注释掉 odbc.pro 文件中的指定行:
;QMAKE_USE += odbc
$ ~/Qt5.10.0/5.10.0/gcc_64/bin/qmake
"INCLUDEPATH+=/usr/local/unixODBC/include"
"LIBS+=-L/usr/local/unixODBC/lib -lodbc"
$ sudo make
libqsqlodbc.so被自动生成在
~/Qt5.10.0/5.10.0/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers中
将它移动到下面的目录中
~/Qt5.10.0/5.10.0/gcc_64/plugins/sqldrivers
可以执行Qt需要访问odbc的程序了
-------------------------------------------------------------------------------------
为什么要手动编译odbc库?
缺省情况下,没有QODBC动态链接库,运行程序出现如下错误提示:
("QSQLITE", "QMYSQL", "QMYSQL3", "QPSQL", "QPSQL7")
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL
QPSQL7
=== Driver not loaded Driver not loaded
查看 ~/Qt5.10.0/5.10.0/gcc_64/plugins/sqldrivers,有如下三个文件:
libqslite.so
libqsqlmysql.so
libqsqlpsql.so
缺少libqsqlodbc.so,不同版本QT此文件不兼容,需源码编译。