Mac系统下编译Oracle的SQL Drivers插件qsqloci

今天编译在Mac下编译了Oracle的SQL驱动插件,这里记录编译过程供参考。

今天编译在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  

这里的[your_oracle_dir]需要替换为第2步创建的目录。然后再执行make生成库文件。

在执行时make发现无法找到这个文件,,而实际这个文件在目录中是有的,原因是默认执行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  

这样是可以编译成功的,但是在最后link时还有一个错误,无法找到库文件“library not found for -lclntsh”,查找了oracle的安装目录下,确实没有这个文件,但有一个libclntsh.dylib.10.1,猜测这个就是一个动态库,只是版本不同的问题。于是给这个文件做个符号链接,在[your_oracle_dir]目录下执行

ln -s libclntsh.dylib.10.1 libclntsh.dylib  

然后再回头去执行make命令,就可以创建成功了。创建后的文件在~/QtSDK/QtSources/4.8.0/src/plugins/sqldrivers/oci目录下,把它们复制到Qt的sqldrivers目录下就可以了。

以上就是整个生成驱动插件的过程。

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1932867.html

(0)
上一篇 2025年2月22日 22:01:29
下一篇 2025年2月22日 22:02:01

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Oracle Sqlplus设置行数和宽度

    1. 设置页面显示总行数 1) 查看目前的pagesize,默认是14: Sqlplus代码 1. show pagesize; 2) 将pagesize设置好100, 修改页面显示和行的默认值 但是这种方法,在你下次进入Sql Plus的…

    数据库 2025年2月23日
    100
  • 如何理解Oracle实例(instance)和数据库(database)的概念

    我的C:下放了一个文本文件:example.txt,这是个实际存在的物理文件,现在打开进程管理器,进程管理器中看不到什么和这儿文件有 有朋友问什么是instance,什么是database。于是群友七嘴八舌的说了很多很理论很理论的东西,这些…

    数据库 2025年2月23日
    100
  • OCP题库笔记1z0-052

    2 关于Oracle Data Dump export和importimport操作同时可以更改表名;可以在export操作期间重写一个存在的dumpfile。 首页 → 数据库技术 背景: 阅读新闻 ocp题库笔记1z0-052 [日期:…

    数据库 2025年2月23日
    300
  • Oracle数据运用那种主键生成策略

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程 Hibernate是一个开放源代码的对象关系映射框架,,它对JDBC进行了非常轻量级的对象封装,使得…

    数据库 2025年2月22日
    100
  • Oracle数据库归档日志大小的修改方法

    Oracle归档日志相信大家都不会陌生,下面就为您介绍Oracle归档日志大小的修改方法,希望对您学习Oracle归档日志方面能够有所帮助 Oracle归档日志相信大家都不会陌生,,下面就为您介绍Oracle归档日志大小的修改方法,希望对您…

    数据库 2025年2月22日
    100
  • Oracle数据库采用哪种主键生成策略

    适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识使用SQL Server 和 MySQL 的自 1、自动增长identity: 适用于MySQL、DB2、MS S…

    数据库 2025年2月22日
    100
  • Oracle数据库字典表优化小技巧

    字典表一般是比较常用的,可以设置这些表使用keep池。 先分析一下方案中的字典表,以便计算空间,简单起见,所有表都分析一下,调 一、 字典表一般是比较常用的,可以设置这些表使用keep池。 先分析一下方案中的字典表,以便计算空间,简单起见,…

    数据库 2025年2月22日
    100
  • 将Oracle数据库设置为非归档

    在归档日志模式下,有可能会遇到归档日志大小超过最大值而出现讨厌的ORA-00257错误,前面说了如何把归档日志空间变大。而在普通的 在归档日志模式下,有可能会遇到归档日志大小超过最大值而出现讨厌的ORA-00257错误,,前面说了如何把归档…

    数据库 2025年2月22日
    100
  • Oracle数据库ORA-12162错误解决

    启动Oracle时,在SQL提示符下输入conn /as sysdba,会出现下面的错误: SQLgt; conn /as sysdba ORA-12162 TNS:net service nam 启动Oracle时,在SQL提示符下输入c…

    数据库 2025年2月22日
    100
  • Oracle 重做联机日志文件

    重做日志文件是ORACLE数据库不可缺少的组成部分,Oracle服务器将对数据库所有更改按顺序记录到重做日志缓冲区中,LGWR进程把重做 Oracle 重做联机日志文件 七步重建redo联机日志 五分钟重建redo日志重建 第一步:新建三个…

    数据库 2025年2月22日
    100

发表回复

登录后才能评论