人大金仓数据库kingbaseQT驱动编译详解

129 阅读4分钟

QT驱动编译详解

关键字:

Linux、QT、驱动、libkci、人大金仓、KingbaseES

一、环境准备

1.1 软件环境要求

1、Linux环境中安装了QT

2、需要Kingbase头文件和库

1.2 资源准备

1、QT安装后,驱动qmake指令可以使用。

2、git上的驱动文件KES_DevFM,这部分为驱动,需要有权限,没有权限的可以联系作者拷贝。

二、QT驱动编译

2.1 QT环境配置

1、安装好QT后,查看驱动版本和地址。

image.png

图2-1 QT驱动版本和地址

2、用~/.bashrc修改bashrc的内容,添加qmake环境变量,如下图所示,添加完成之后可在其他路径使用qmake指令,更改完后执行source ~/.bashrc。

image.png

图2-2 qmake配置PATH

2、拉取git上DevFM,拉去完成后转到DevFM中。

image.png

图2-3 git拉取文件

3、在KES_DevFM中,用vi set-interface-env.sh指令修改文件。

image.png

图2-4 拉取文件完成并修改文件参数

修改env_home=$HOME/env

image.png

图2-5 修改env_home

另外可以看到KINGBASE_HOME=$env_home/AcbaseT_for_php_zzkk,此处可以根据个人修改,我这里默认没有修改,即env_home路径下还有一个KINGBASE_HOME文件夹。

image.png

图2-6 修改KINGBASE_HOME

4、在home路径下,即根目录下创建env文件夹,并且创建一个子文件夹KINGBASE_HOME,将KES数据库的安装文件复制到该文件夹中。

KES路径:home/zhaowei/kes/KES_Server/release/

复制的文件存放路径:/home/zhaowei/env/KINGBASE_HOME

指令:cp –r 文件路径 需要复制到的文件路径

需要复制的文件:bin include lib share

我这里文件名写成了AcbaseT_for_php,正确应为AcbaseT_for_php_zzkk。

修改文件名:mv AcbaseT_for_php AcbaseT_for_php_zzkk

image.png

图2-7 复制文件

2.2 编译驱动

1、切换到KES_Dev中,先切换分支到V9或者V8中,指令如下:

git branch查看当前分支

git clean -xfd清除当前分支修改

git reset --hard重置分支

git pull拉取代码覆盖

git checkout Main_Dev_V9R1C1B2切换到V9分支

git branch -a | grep 1215查找V8分支

git checkout V8_Master_REL_221215切换到V8分支,建议先切换到V8分支,因为V8有build_partial.sh这个一键编译驱动的脚本,把这个脚本复制出来存放到指定路径后切换到V9分支(cp build_partial.sh ../复制到上级目录),然后再把build_partial.sh放到KES_Server中(cp ../build_partial.sh ./复制到上级目录),这样就能在V9分支下使用这个脚本了hiahiahia。

image.png

图2-8 分支相关操作

image.png

图2-9 KES的V8与V9分支

image.png 图2-10 V8分支文件cp到V9分支

2、切换到V9分支后,利用指令vim build_partial.sh修改文件,将里面的oci、odbc以及occi等先注释掉,然后加入QT的编译指令,然后:wq即可。

QT驱动编译执行指令:sh ./Qt/Qt5/build/build.sh $1

image.png

图2-11 添加QT驱动编译指令

3、然后用vim set-interface-env.sh指令修改set-interface-env.sh文件,在其中加入QMAKE4和QMAKE5并添加本机qmake的安装路径,作者这里只演示QT5。

export QMAKE5=/安装路径/bin/qmake

image.png

图2-12 添加qmake5路径

4、执行编译:./build_partial.sh V009R001C001B002。编译发现出现了错误,首先是这里的文件名,后缀zzkk前文已经提到过了,然后是没有bpq.so文件。

image.png

图2-13 添加QT驱动编译指令

5、继续执行vim set-interface-env.sh,提示缺少libpg.so文件。出现这个问题说明没有在V9分支,回看2.1分支操作步骤切换到V9分支即可

image.png

图2-14 修改文件名

6、继续执行编译:./build_partial.sh V009R001C001B002,出现了linux_amd64和libqsqlkingbase.so的错误。

image.png

图2-15 错误信息

7、解决思路

1)在QT安装路径下,qt-everywhere-opensource-src-5.6.1/ release/ plugins/创建sqldrivers文件目录。

2)在KES_Server目录中展开,进到build/ KingbaseES/ Qt5/ Linux_x86_64_GCC_64bit_RELEASE/,将其中的libqsqlkingbase.so和libkci.so.5复制到1)中的sqldrivers文件目录中。

3)使用ldd –r提前查出有undefined symbol的依赖,这样可以省掉很多的试错和修改时间:ldd -r libqsqlkingbase.so。

image.png

图2-15 KES_Server中操作

image.png

图2-16 QT安装路径中操作

8、处理上述not found的问题

1)在KES_Server路径下执行vim set-interface-env.sh,可以看到路径配置错了,把前面的$env_home删掉。

image.png

图2-16 修改QMAKE5路径

2)先执行环境变量变更:export LD_LIBRARY_PATH=/home/zhaowei/

qt/qt-everywhere-opensource-src-5.6.1/release/lib:$LD_LIBRARY_PATH

3)再执行ldd -r libqsqlkingbase.so,可以看到已经能找到相应文件了。

image.png

图2-17 临时修改PATH并执行ldd指令

9、可以看到上图最下方还有两个undefined文件,是openssl的问题,主要是高低版本兼容问题,作者Linux中已经安装过openssl1.1.1q,因此直接执行环境变量变更即可(source)。

image.png

图2-18 修改openssl版本

特别备注:git上拉取代码时,要先把这两行注销掉,并source ~./bashrc执行一下变更,不然你会发现拉取不了代码。

image.png

图2-19 修改bashrc文件

10、在KES_Server路径下执行./build_partial.sh V009R001C001B002,可以看到执行完成,驱动安装成功了。

image.png

图2-20 临时修改PATH并执行ldd指令

11、驱动安装完成后,可以看到当前目录已经生成了一个build文件,进入到build中,buildKingbaseES/Qt5/Linux_x86_64_GCC_64bit_RELEASE/,可以看到编译的驱动的最新时间,编译成功后时间也会更改,如果有的文件编译错误,时间还是上一个时间。

image.png

图2-21 驱动安装成功查看驱动更新时间

三、总结

1、驱动编译过程问题很多,一定要仔细,设计不少版本兼容问题。

2、驱动编译完成之后,可以编写程序来使用驱动了,想了解如何使用驱动,可以参考作者另一篇驱动使用的文章。