当前位置: 首页 > article >正文

Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL)

本文参考 QOCI for the Oracle Call Interface (OCI)。
除一般的 Linux 系统外,本文也适用于 WSL 2。
在开始之前,如果没有安装 QOCI 插件,则试图链接 Oracle 数据库时会报错:

Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin “wayland” in “” even though it was found.
“QOCI driver not available.”
qt.sql.qsqldatabase: QSqlDatabase: QOCI driver not loaded
qt.sql.qsqldatabase: QSqlDatabase: available drivers: QMIMER QPSQL QODBC QSQLITE QMARIADB QMYSQL
QSqlError(“”, “Driver not loaded”, “Driver not loaded”)

  1. 安装 CMake 等依赖。在 Oracle Instant Client Downloads for Linux x86-64 (64-bit)
    ,以 ZIP 安装为例,下载 Base - one of these packages is required - Basic Package (ZIP)、Tools - optional packages - SQL*Plus Package (ZIP)、Development and Runtime - optional packages - SDK Package (ZIP),展开网页内的Installation Instructions - Instant Client Installation for Linux x86-64 (64-bit) 教程操作,解压到/opt/oracle目录下(需要 sudo 权限)。其中,后两者均包含META-INFinstantclient_23_5两个目录,解压时合并目录,或使用cp -r命令合并目录。合并后目录结构如下:

BASIC_LICENSE legacy.so libclntsh.so.23.1 libocci.so libociei.so sqlplus
BASIC_README libclntsh.so libclntshcore.so libocci.so.10.1 libocijdbc23.so ucp.jar
SDK_LICENSE libclntsh.so.10.1 libclntshcore.so.12.1 libocci.so.11.1 libsqlplus.so ucp11.jar
SDK_README libclntsh.so.11.1 libclntshcore.so.18.1 libocci.so.12.1 libsqlplusic.so uidrvci
SQLPLUS_LICENSE libclntsh.so.12.1 libclntshcore.so.19.1 libocci.so.18.1 libtfojdbc1.so xstreams.jar
SQLPLUS_README libclntsh.so.18.1 libclntshcore.so.20.1 libocci.so.19.1 network
adrci libclntsh.so.19.1 libclntshcore.so.21.1 libocci.so.20.1 ojdbc11.jar
fips.so libclntsh.so.20.1 libclntshcore.so.22.1 libocci.so.21.1 ojdbc8.jar
genezi libclntsh.so.21.1 libclntshcore.so.23.1 libocci.so.22.1 pkcs11.so
glogin.sql libclntsh.so.22.1 libnnz.so libocci.so.23.1 sdk

保证目录内包含了sqlplussdk(sqlplus 可选,sdk 必需)。如果安装传统的 Oracle Client 21c 并使用 WSL,则需要 X11 依赖,如果采用的是 Qt Online Installer 安装的 Qt,则在安装程序阶段就已经安装过了相关依赖,故在此不作赘述。
2. 如果以上操作完成后/opt/oracle/instantclient_23_5目录内已包含链接libclntsh.solibocci.so则不需依照教程重新链接(ln -s)一遍。将

export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3:$LD_LIBRARY_PATH
export PATH=/opt/oracle/instantclient_19_3:$PATH

添加到.bash_profile(如果用zsh可以直接添加到.zshrc)并source之。
3. 执行

mkdir build-sqldrivers
cd build-sqldrivers
qt-cmake -G Ninja /opt/Qt/6.8.0/gcc_64/bin/qt-cmake -G Ninja /opt/Qt/6.8.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.8.0/gcc_64 -DOracle_ROOT=/opt/oracle/instantclient_23_5
cmake --build .
sudo cmake --install .

默认 CMake configuration 为“RelWithDebInfo”。
cmake-install4. 重新 CMake、编译项目。如果存在其他问题,可执行

sudo chmod +x /opt/Qt/6.8.0/gcc_64/plugins/sqldrivers/libqsqlite.so
/opt/Qt/6.8.0/gcc_64/plugins/sqldrivers/libqsqloci.so

至此 QOCI 插件成功安装。
注意:如果 Qt 版本小于 6.8.0,则第三步第三行命令应改为:

/opt/Qt/6.8.0/gcc_64/bin/qt-cmake -G Ninja /opt/Qt/6.8.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.8.0/gcc_64 -DOracle_INCLUDE_DIR=/opt/oracle/instantclien
t_23_5/sdk/include -DOracle_LIBRARY=/opt/oracle/instantclient_23_5/libclntsh.so

其中Oracle_INCLUDE_DIR为存放oci.h等头文件的目录。


http://www.kler.cn/a/377519.html

相关文章:

  • Niantic 的 SPZ 格式:3D 领域的新突破?
  • 轻松理解操作系统 - 轻松了解 inode 是如何管理文件的
  • [RocketMQ 5.3.1] Win11 + Docker Desktop 本地部署全流程 + 踩坑记录
  • qt QDragEnterEvent详解
  • mqsql 场景函数整理
  • 【JavaSE】(2) 方法
  • 设计模式-观察者模式(代码实现、源码级别应用、使用场景)
  • R6:LSTM实现糖尿病探索与预测
  • 中药大数据(四):数据预处理+管理端的功能实现
  • linux-valgrind检测分析C/C++程序(三)
  • 4. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验2:PWM驱动舵机)
  • Java方法的使用
  • MP4650模块改为固定电压记录
  • 【C++】深入理解 C++ 输入输出同步机制:为什么 cin/cout 没有 scanf/printf 快?
  • Java: 遍历 Map
  • Ubuntu编译linux内核指南(适用阿里云、腾讯云等远程服务器;包括添加Android支持)
  • golang有序map
  • vue3 + ts + element-plus 二次封装 el-table
  • ✨ Midjourney中文版:创意启航,绘梦无界 ✨
  • Harmony NEXT - AlphabetIndexer实现联系人字母索引
  • 密码学简介
  • Python入门:如何掌控多线程数量
  • 【OD-支持在线评测】智能驾驶(200分)
  • 无人机之自动控制原理篇
  • oracle-函数-NULLIF (expr1, expr2)的妙用
  • Vuestic 数据表格 使用demo