Ubuntu系統中Qt連PostgreSQL的問題解決

來源:互聯網
上載者:User

Ubuntu系統中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 的:請點這裡

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.