You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RHEL 7 Linux的Qt环境中编译加载QOCI驱动的方法

解决RHEL7下Qt5 QOCI驱动编译失败问题

1. 修正oci.pro文件

你当前的oci.pro用了TEMPLATE = subdirs(子目录模板),这根本不会生成驱动库。直接替换成以下内容:

QT += sql
TARGET = qsqloci

SOURCES = $$PWD/qsql_oci.cpp
HEADERS = $$PWD/qsql_oci_p.h

INCLUDEPATH += /usr/include/oracle/11.2/client
LIBS += -L/usr/lib/oracle/11.2/client/lib -lclntsh -lnnz11

OTHER_FILES += oci.json

PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../../../sql/driverbase.pri)

注意:别自己在Qt插件目录瞎建空目录编译,得用Qt源码里的OCI驱动源码文件。如果是系统包安装的Qt,先装qt5-qtbase-devel和qt5-qtbase-src包获取源码;源码安装的Qt直接找qtbase/src/plugins/sqldrivers/oci目录就行。

2. 准备编译环境

  • 装依赖包:
    yum install gcc-c++ qt5-qtbase-devel qt5-qtbase-src oracle-instantclient11.2-devel
    
  • 设置Oracle环境变量:
    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib:$LD_LIBRARY_PATH
    export ORACLE_HOME=/usr/lib/oracle/11.2/client
    

3. 正确编译流程

  1. 进入Qt源码里的OCI驱动目录(比如/usr/src/qt5-qtbase/src/plugins/sqldrivers/oci)
  2. 生成Makefile:
    qmake-qt5 "INCLUDEPATH=/usr/include/oracle/11.2/client" "LIBS=-L/usr/lib/oracle/11.2/client/lib -lclntsh -lnnz11"
    
  3. 编译:
    make
    
  4. 把驱动装到Qt插件目录:
    make install
    

4. 验证驱动

编译完检查/usr/lib64/qt5/plugins/sqldrivers下有没有libqsqloci.so。运行Qt程序前,必须先加载Oracle库路径:

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib:$LD_LIBRARY_PATH

再测试数据库连接即可。

内容的提问来源于stack exchange,提问作者Derrick Campbell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:40:37