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等头文件的目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907940.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电磁兼容(EMC):整改案例(六)Y电容过大导致雷击浪涌炸机

目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某金属外壳带接地线的产品按GB/T 17626.5进行雷击浪涌测试,在L,N线对PE进行4kV浪涌电压测试时,出现炸机现象,AC-DC电源芯片损坏。而在L,N线间进行2…

WPF怎么通过RestSharp向后端发请求

1.下载RestSharpNuGet包 2.请求类和响应类 public class ApiRequest {/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>//…

C语言 | Leetcode C语言题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; bool detectCapitalUse(char * word){int len strlen(word);int res 0;int index -1;if(len 1)return true;else{for(int i 0; i < len; i){if(isupper(word[i])){res;index i;}}}return res len || res 0 || (res 1 &&…

VidPanos:从随手拍摄的平移视频生成全景视频

在当今数字化时代,视频拍摄已经成为人们记录生活和分享经历的重要方式。然而,普通手机拍摄的视频往往受到视角的限制,无法完整地展现一个广阔的场景。今天,我们要介绍的 VidPanos 技术,为解决这个问题提供了一种创新的方法。 VidPanos 是由来自华盛顿大学、谷歌 DeepMind…

使用 LlamaIndex 实现的检索增强生成(RAG)

Retrieval Augmented Generation (RAG) using LlamaIndex — ROCm Blogs (amd.com) 2024 年 4 月 4 日 作者&#xff1a;Clint Greene. 先决条件 要运行本博客&#xff0c;您需要具备以下条件&#xff1a; Linux: 参见受支持的 Linux 发行版 ROCm: 参见安装说明 AMD GPU: 参…

【计网】深入理解NAT机制,内网穿透与内网打洞,代理服务

我没胆量犯错 才把一切错过 --- 林夕 《我对不起我》--- 一文了解NAT机制&#xff0c;代理服务&#xff0c;内网穿透 1 再谈 NAT 机制2 内网穿透与内网打洞3 代理服务器 1 再谈 NAT 机制 NAT机制我们在解决IP地址不足的问题中提到过。为了解决IP地址不足的问题&#xff0c;采…

京东毫秒级热key探测框架JD-hotkey

前言 对任意突发性的&#xff0c;无法预先感知的热点数据&#xff0c;包括热点数据&#xff08;如突发大量请求同一个商品&#xff09;、热用户&#xff08;如恶意爬虫刷子&#xff09;、热接口&#xff08;突发海量请求同一个接口&#xff09;等&#xff0c;一瞬间打到我们的服…

2025生物发酵展(济南)为生物制造产业注入新活力共谱行业新篇章

2025第十四届国际生物发酵展将于3月3-5日济南盛大举办&#xff01;产业链逐步完整&#xff0c;展会面积再创历史新高&#xff0c;展览面积较上届增涨至60000平方米&#xff0c;专业观众40000&#xff0c;品牌展商800&#xff0c;同期活动会议增加至50场&#xff0c;展会同期将举…

设计模式08-行为型模式1(命令模式/迭代器模式/观察者模式/Java)

五、行为型模式 **行为模式的定义&#xff1a;**行为型模式是对不同的对象之间划分职责和算法的抽象化。行为型模式定义了系统中对象之间的交互与通信&#xff0c;研究系统在运行时对象之间的相互通信与协作&#xff0c;进一步明确对象的职责&#xff0c;包括对系统中较为复杂的…

边缘计算网关在机床数据采集中的应用-天拓四方

随着工业4.0和智能制造的快速发展&#xff0c;机床作为制造业的核心设备&#xff0c;其数据采集与分析对于提升生产效率、保证产品质量、优化加工过程具有重要意义。传统的数据采集方式存在数据传输速度慢、实时性差、数据处理能力有限等问题。为了解决这些问题&#xff0c;边缘…

Navicat 连接远程腾讯云服务器的MySQL数据库

首先需要开放开放腾讯云安全端口&#xff0c;可以参考这个链接腾讯云服务器入站规则端口开放使用指南(CentOS系统)。 但是注意需要开放的是IPv6&#xff0c;这个可以通过netstat命令查看确认。 然后查看当前用户信息 select user, host from mysql.user一般看到的都是 localh…

Navicat for MySQL 错误:1251

mySql&#xff1a;8.4 Navicat for MySQL&#xff1a;11.0.10 企业版 绿色版 官网中关于mysql_native_password插件的说法&#xff1a;链接 1. 问题 连接数据库报错&#xff1a;1251 要求升级Navicat for MySQL 2. 原因 mysql中的mysql_native_password插件默认是关闭的 …

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

【MyBatis】【基于轻量型架构的WEB开发】课程 课后习题 章节测试

mybatis关联查询、缓存、注解 一. 单选题 1. 下列关于 <collection> 元素的描述正确的是&#xff08;&#xff09;。 A. MyBatis 就是通过 <collection> 元素来处理一对多关联关系的 B. <collection> 元素的属性与 <association> 元素完全相同 C.…

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

opencv - py_imgproc - py_canny Canny边缘检测

文章目录 Canny 边缘检测目标理论OpenCV 中的 Canny 边缘检测其他资源 Canny 边缘检测 目标 在本章中&#xff0c;我们将学习 Canny 边缘检测的概念用于该目的的 OpenCV 函数&#xff1a;cv.Canny() 理论 Canny 边缘检测是一种流行的边缘检测算法。它由 John F. Canny 于1…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端&#xff1a;JAVA、Solon、easyExcel、FastJson2 前端&#xff1a;vue2.js、js、HTML 模式1&#xff1a;合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

数据结构作业day5

链栈&#xff0c;自己实现一遍&#xff0c;但是节点存储不是整数&#xff0c;存储学生信息&#xff08;年龄&#xff0c;分数&#xff0c;姓名&#xff09;三级引用。 1、建立学生信息结构体&#xff0c;将data改为学生信息结构体类型。 2、循环入栈和入队。 循环入栈代码 …

【学术精选】SCI期刊《Electronics》特刊“New Challenges in Remote Sensing Image Processing“

英文名称&#xff1a;New Challenges in Remote Sensing Image Processing 中文名称&#xff1a;"遥感图像处理的新挑战"特刊 期刊介绍 “New Challenges in Remote Sensing Image Processing”特刊隶属于《Electronics》期刊&#xff0c;聚焦遥感图像处理领域快速…

2024 CSS保姆级教程 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前&#xff0c;需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed&#xff0c;它就是一个绝对定位元素。​ 在…