在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. 正确编译流程
- 进入Qt源码里的OCI驱动目录(比如
/usr/src/qt5-qtbase/src/plugins/sqldrivers/oci) - 生成Makefile:
qmake-qt5 "INCLUDEPATH=/usr/include/oracle/11.2/client" "LIBS=-L/usr/lib/oracle/11.2/client/lib -lclntsh -lnnz11" - 编译:
make - 把驱动装到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
相关产品推荐
相关产品推荐

