您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/5/14 17:12:58发布28次查看
问题是这样的: 在windows系统下, qt连接数据库postgresql是需要自己去qt源码里手动编译postgresql驱动的, 然后把生成的动态连接库
昨天遇到一个问题, 折腾了一天都没解决, 今天突然间就解决了。
问题是这样的: 在windows系统下, qt连接数据库postgresql是需要自己去qt源码里手动编译postgresql驱动的, 然后把生成的动态连接库放到qt的安装目录里面的插件目录plugins中. 当我跑到ubuntu系统下去做时, 发现在我的qt4.8.6的目录/opt/qt4.8.6/plugins/sqldrivers下是有libqsqlite.so和libqsqlpsql.so的, 也就是说qt已经自带了postgresql的驱动了. 然后我直接编译完项目, 运行时居然提示没有找到数据库驱动, 而且不但psql的驱动找不到, 连基本的sqlite都没找到。
我这就很郁闷了, 明明驱动就在那里, 为什么就说没有呢?
我系统里面还装了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.
好傻的问题, 我居然这么久才发现.
------------------------------------华丽丽的分割线------------------------------------
centos 6.3环境下yum安装postgresql 9.3
postgresql缓存详述
windows平台编译 postgresql
ubuntu下lapp(linux+apache+postgresql+php)环境的配置与安装
ubuntu上的phppgadmin安装及配置
centos平台下安装postgresql9.3
postgresql配置streaming replication集群
如何在centos 7/6.5/6.4 下安装postgresql 9.3 与 phppgadmin 
------------------------------------华丽丽的分割线------------------------------------
postgresql 的详细介绍:请点这里
postgresql 的下载地址:请点这里
本文永久更新链接地址:

该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product