Mac系统下编译Oracle的SQL Drivers插件qsqloci |
发布时间: 2012/9/3 17:03:06 |
今天编译在Mac下编译了Oracle的SQL驱动插件,这里记录编译过程供参考。 先介绍一下编译环境:Mac OS X 10.7.3, 安装Qt SDK 1.2 for Mac,XCode 4.2.1。 1. 首先是到Oracle的网站上下载相关的库和开发包,按照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在执行make,另一种是利用qmake生成makefile再生成。我这里用第一种方法没有成功(原因不详),这里说的是第二种方法: 1)进入Qt源码目录,~/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/oci 2) 执行qmake命令, 按照文档中的说明,执行 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 在执行时make发现无法找到<QtSql/private/qsqlcachedresult_p.h>这个文件,www.linuxidc.com而实际这个文件在目录中是有的,原因是默认执行qmake时只把二进制的include目录QtSDK/Desktop/Qt/4.8.0/gcc/include这个目录放在INCLUDEPATH中,而这个文件是在源代码目录下,所以会出现无法找到头文件的问题。解决办法是把源代码的include目录在qmake时直接添加进去,也就是执行如下的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 然后再回头去执行make命令,就可以创建成功了。创建后的文件在~/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/oci目录下,把它们复制到Qt的sqldrivers目录下就可以了。 以上就是整个生成驱动插件的过程。 本文出自:亿恩科技【www.enkj.com】 |