Ubuntu系统中Qt连PostgreSQL的问题解决

2015-02-02 13:38:08 · 作者: · 浏览: 23

昨天遇到一个问题, 折腾了一天都没解决, 今天突然间就解决了。


我这就很郁闷了, 明明驱动就在那里, 为什么就说没有呢?


我系统里面还装了qt5.2.1, 我便试着在5.2.1上面重新编译运行, 发现只找到了sqlite的驱动, 没有找到psql的驱动. 我跑去它的plugins/sqldrivers目录下, 发现确实只有libsqlite.so.


那么, 问题来了, qt5.2.1找到了sqlite的驱动, 为什么qt4.8.6就没有找到了?


我一直认为是编译的时候链接的某路径有问题, 但一直不得其解.


直到今天, 我重写开启qtcreator, 直接运行程序, 发现居然连接上数据库了! 然后我重写编译, 又说没有发现数据库驱动!这是为什么呢? 后来又折腾了一会才发现, 我是直接在qt4.8.6套件下编译, 然后在qt5.2.1套件下执行, 然后就链接成功了. 然后我又试着在终端直接运行qt4.8.6构建的执行文件, 结果也链接成功了.


原来是运行时的动态链接库问题, 而不是编译的问题!


原本在Qt的Run Environment中, qt4.8.6的LD_LIBRARY_PATH自动设置为/opt/qt4.8.6/lib, 改为/opt/qt4.8.6就好了. 需要的动态库其实是在/opt/qt4.8.6/plugins/sqldrivers里面.


而在qt5.2.1的运行环境能运行是因为, qt5.2.1的LD_LIBRARY_PATH自动设置为/usr/lib/x86_64-linux-gnu, 在这个目录下有另外一个qt4的目录, 在它的目录下面有那个libsqlite.so.


好傻的问题, 我居然这么久才发现.


------------------------------------华丽丽的分割线------------------------------------


------------------------------------华丽丽的分割线------------------------------------