参考Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL),根据SQL Database Drivers成功将libqsqloci.so
、qsqloci.debug
等文件安装到/opt/Qt6.8.2/6.8.2/gcc_64/plugins/sqldrivers
后,运行Qt程序并尝试连接数据库时仍然报错
QSqlError("", "Driver not loaded", "Driver not loaded")
参考Cannot load QOCI SQL driver even successfully built。经确认,LD_LIBRARY_PATH
与PATH
均添加了Oracle客户端路径(~/software/Oracle
,即libclntsh.so
所在的目录),并添加了ORACLE_HOME
环境变量(注意:如果Oracle客户端为instant client,则不应设置该环境变量)。经QSqlDatabase: QOCI driver not loaded、提醒,在Qt Creator中左边栏的"项目",在左分栏中的"构建与运行"中选择相应的Kit(例如Desktop Qt 6.8.2)的"运行"一栏,在右分栏中打开"运行设置",在"环境"一栏中展开"详情",点击"添加(A)"添加环境变量,在右侧的文本输入框中输入QT_DEBUG_PLUGINS=1
,然后重新运行Qt程序并尝试连接数据库,显示详细报错:
libclntsh.so.21.1 cannot open shared object file: No such file or directory
在shell中通过ldd libqsqloci.so
命令检查动态对象的链接情况,显示
libclntsh.so.21.1 => /home//software/Oracle/libclntsh.so.21.1 (0x000075fe63a00000)
同时其他so文件同样正常链接。参考"libclntsh.so: cannot open shared object file in ubuntu to run python program in Spark Cluster、libclntsh.so.11.1: cannot open shared object file.,在/etc/ld.so.conf.d/
目录下新建文件oracle-client.conf
,并输入/home/<username>/software/Oracle
作为文件内容,然后执行sudo ldconfig
。再次运行Qt程序并连接数据库,成功。