加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Ubuntu 17.1 + Qt5.10 源码编译ODBC库

(2018-02-02 19:09:02)
标签:

qt

unixodbc

libqsqlodbc.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此文件不兼容,需源码编译。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有