Mac系統(tǒng)下編譯Oracle的SQL Drivers插件qsqloci |
發(fā)布時間: 2012/9/3 17:03:06 |
今天編譯在Mac下編譯了Oracle的SQL驅動插件,這里記錄編譯過程供參考。 先介紹一下編譯環(huán)境:Mac OS X 10.7.3, 安裝Qt SDK 1.2 for Mac,XCode 4.2.1。 1. 首先是到Oracle的網(wǎng)站上下載相關的庫和開發(fā)包,按照Qt文檔中的說明(How to Build the OCI Plugin on Unix and Mac OS X),需要下載"Instant Client Package - Basic"和"Instant Client Package - SDK"兩個包,可以從這里- 2. 把下載的zip文件解壓到同一個目錄下,如Oracle10gClient; 3. 編譯。在qt的文檔中有兩種方法,一個是利用configure生成makefile在執(zhí)行make,另一種是利用qmake生成makefile再生成。我這里用第一種方法沒有成功(原因不詳),這里說的是第二種方法: 1)進入Qt源碼目錄,~/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/oci 2) 執(zhí)行qmake命令, 按照文檔中的說明,執(zhí)行 qmake "INCLUDEPATH+=[your_Oracle_dir]/instantclient_10_2/sdk/include" "LIBS+=-L[your_oracle_dir]/instantclient_10_2 -Wl,-rpath,[your_oracle_dir]/instantclient_10_2" -lclntsh -lnnz10" oci.pro 在執(zhí)行時make發(fā)現(xiàn)無法找到<QtSql/private/qsqlcachedresult_p.h>這個文件,www.linuxidc.com而實際這個文件在目錄中是有的,原因是默認執(zhí)行qmake時只把二進制的include目錄QtSDK/Desktop/Qt/4.8.0/gcc/include這個目錄放在INCLUDEPATH中,而這個文件是在源代碼目錄下,所以會出現(xiàn)無法找到頭文件的問題。解決辦法是把源代碼的include目錄在qmake時直接添加進去,也就是執(zhí)行如下的qmake命令: qmake "INCLUDEPATH+=[your_Oracle_dir]/instantclient_10_2/sdk/include ~/QtSDK/QtSources/4.8.0/include" "LIBS+=-L[your_oracle_dir]/instantclient_10_2 -Wl,-rpath,[your_oracle_dir]/instantclient_10_2" -lclntsh -lnnz10" oci.pro ln -s libclntsh.dylib.10.1 libclntsh.dylib 然后再回頭去執(zhí)行make命令,就可以創(chuàng)建成功了。創(chuàng)建后的文件在~/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/oci目錄下,把它們復制到Qt的sqldrivers目錄下就可以了。 以上就是整個生成驅動插件的過程。 本文出自:億恩科技【www.cmtents.com】 |