Mac系統下Qt 4.8編譯串連資料庫(Oracle,MySql)

來源:互聯網
上載者:User

在Mac下成功編譯了MySql和Oracle的資料庫外掛程式驅動,但遺憾的是在程式中無論如何也載入不了這兩個驅動,也無法串連資料庫。在環境變數中設定QT_DEBUG_PLUGINS=1, 再啟動程式後Qt會報告一些載入外掛程式的調試資訊,從中可以看出是外掛程式不相容引起的,也就是文檔中所說的Build Key的問題,在文檔中有提到可能需要清除外掛程式緩衝(Plugin cache),應該是在一個QSettings定義的檔案中,但我沒找到。無奈下將QtSDK刪除重新安裝一遍,又從頭開始,最後終於成功。下面記錄詳細的過程,供日後參考。

1. 首先安裝QtSDK 1.2, 安裝在 ~/QtSDK目錄下,安裝的時候要選擇安裝4.8.0的原始碼,否則後面無法編譯plugin;

2. 下載MySql和Oracle的資料庫連接的動態庫;可從官網下載,注意選擇與你的系統合適的版本,我這裡是Max OSX 10.7.3 64bit;MySql下載的是mysql-connector-c-6.0.2-osx10.5-x86-64bit.tar.gz, oracle下需要的是instantclient basic包和instantclient SDK包。

3. 將下載的資料庫文檔解壓縮到本地目錄下,記錄下檔案目錄;MySql解壓在~/bin/mysql目錄下,下面會有include和lib子目錄;oracle的兩個包解壓到~/bin/oracle目錄下,目錄下有庫檔案和sdk目錄;

4.準備工作完了後,開始編譯產生Qt庫;首先執行命令(後面3行是一個命令,因太長了分行顯示)

  1. cd ~/QtSDK/QtSources/4.8.0  
  2. ./configure -opensource -prefix /Users/lutx/QtSDK/Desktop/Qt/4.8.0/gcc -plugin-sql-mysql -plugin-sql-oci  
  3.  -plugin-sql-odbc -plugin-sql-sqllite -I/Users/lutx/bin/mysql/include -I/Users/lutx/bin/oracle/sdk/include  
  4.  -L/Users/lutx/bin/mysql/lib -L/Users/lutx/bin/oracle

上面的命令中,prefix是定義編譯後的安裝目錄,預設是安裝到/usr/local/Trolltech/Qt-4.8.0目錄下,我這裡給定義安裝到 QtSDK的目錄下,這樣可以避免後面在QtCreator中配置版本,或者利用install_name_tools來修改動態庫名稱等操作。經過一段 時間(幾分鐘)等待後,產生了整個來源目錄下的makefile檔案。系統應該顯示

  1. Qt is now configured for building. Just run 'make'.  
  2. Once everything is built, you must run 'make install'.  
  3. Qt will be installed into /Users/[xxxx]/QtSDK/Desktop/Qt/4.8.0/gcc  
  4.   
  5. To reconfigure, run 'make confclean' and 'configure'.  

上面的[xxxx]應該是你的系統登入使用者名稱,下同。

5.下面開始編譯過程,應該很簡單,直接在剛才的目錄下繼續執行make命令即可,www.bkjia.com 但是我這裡在編譯到QtWebkit這個庫的時候會有錯誤,因此後面將跳過這個庫繼續編譯後面的庫。出現的錯誤是:

  1. fileapi/FileReaderLoader.cpp: In member function ‘void WebCore::FileReaderLoader::convertToDataURL()’:  
  2. fileapi/FileReaderLoader.cpp:307: error: ‘base64Encode’ was not declared in this scope  
  3. make[3]: *** [.obj/debug-static/FileReaderLoader.o] Error 1  
  4. make[2]: *** [debug-all] Error 2  
  5. make[1]: *** [sub-WebCore-make_default-ordered] Error 2  

這裡也不知道是麼原因,沒搞明白。

5.通過Makefile檔案知道,在Webkit後面還有scripttools,plugins(這個是主要目的), 後面用命令逐個編譯每個庫。

  1. cd src/scripttools;make;cd ../plugins;make;cd ../imports;make;cd ../tools;make;cd ../translations;make;cd ../..  
  2. make install  

因為不是必需的,最後沒有編譯examples和demos兩個目錄。

如此編譯已經成功,另外在程式運行時需要將mysql的lib目錄和oracle的lib目錄加到環境變數DYLD_LIBRARY_PATH中,否則還是無法載入資料庫外掛程式驅動。

相關文章

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.