热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Mac系统下编译Oracle的SQLDrivers插件qsqloci

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

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

    推荐阅读
    • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
    • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
    • 本文介绍了如何在Xcode中通过自定义文件模板来添加个性化的注释,以提高代码的可读性和维护性。具体步骤包括打开Xcode的应用包,定位到文件模板目录,并对相关文件进行编辑。 ... [详细]
    • 深入解析8086 CPU的转移指令
      本文详细介绍了8086 CPU中的转移指令,包括无条件转移、条件转移、循环指令及过程调用等,同时探讨了offset操作符的功能及其应用实例。 ... [详细]
    • 在M1 Mac上使用Xcode编译iOS模拟器项目时,可能会遇到错误提示 'building for iOS Simulator, but linking in object file built for iOS, for architecture arm64',本文将提供解决方案。 ... [详细]
    • 本文探讨了使用React Native框架开发的应用,在通过AppCenter构建iOS版本时遇到的‘CopyPlistFile’命令失败的问题,并提供了详细的解决方案。 ... [详细]
    • 如何使用Ionic3框架创建首个混合开发应用
      混合开发是指结合原生(Native)与网页(Web)技术进行移动应用开发的方法。本文将详细介绍如何利用Ionic3这一流行的混合开发框架,从环境搭建到创建并运行首个应用的全过程。 ... [详细]
    • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
    • Cocos2d-x 中 Xcode 项目资源文件夹引用问题解析
      本文探讨了在使用 Cocos2d-x 开发过程中,如何正确配置 Xcode 项目以确保资源文件夹内的文件能够被正确读取。特别指出了一种常见的错误配置及其修正方法。 ... [详细]
    • 本文详细介绍了如何通过微信H5网页授权机制获取用户的code,并进一步获取用户的基本信息,包括必要的配置步骤和前端代码实现。 ... [详细]
    • 本教程旨在指导开发者如何在Mac上设置React Native的开发环境,以进行iOS应用的开发。文中详细介绍了必要的软件安装步骤,包括Xcode、Homebrew、Node.js、Watchman以及React Native CLI等工具的安装方法。 ... [详细]
    • 我在项目中发现设置了 GCC_NO_COMMON_BLOCKS = NO 的配置项,位于 Apple LLVM 编译器 3.1 的代码生成设置中。 ... [详细]
    • iOS中UITabBar与UINavigationController的集成及样式自定义
      探讨如何在iOS开发中有效结合UITabBarController和UINavigationController,并实现自定义样式。项目源码已托管至GitHub:https://github.com/zcsoft/ZCTabNav ... [详细]
    • iOS 10 系统下 AVPlayer 视频播放故障排除
      在使用 iOS 10 系统时,如果遇到 AVPlayer 无法正常播放视频的问题,这可能是由于 Xcode 中异常处理设置不当导致的。本文将详细探讨如何调整 Xcode 设置以解决这一问题。 ... [详细]
    • 本文详细介绍了如何在iOS5中创建和理解简单的Hello World应用,包括Interface Builder的使用、Objective-C源代码文件的结构以及事件处理机制。 ... [详细]
    author-avatar
    kanney姜_958
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有