ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

解决金仓数据库KingbaseES缺少库文件的问题

2022-02-22 16:00:44  阅读:225  来源: 互联网

标签:金仓 调用 lib 数据库 libtinfo 动态 KingbaseES 可执行程序


一、动态库与可执行程序的关系
动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。Linux系统下,动态链接库文件的扩展名一般是so,静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。动态链接库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。如果程序在执行时,缺少相应的动态库,将会导致程序运行失败。

二、Linux系统和数据库软件集成动态库
1、Linux系统的动态库一般存储在/usr/lib 或/usr/lib64目录下(不同版本的Linux系统,位置稍微不同),通过变量LD_LIBRARY_PATH,指定动态库的存储路径,在可执行程序调用时,可以到指定的路径下去加载。如下图所示,Linux系统动态库:
图2-1  /usr/lib下动态库
图2-2 /usr/lib64下动态库
2、数据库软件集成
在数据库安装软件的lib目录下,集成了数据库程序运行时所需的大部分动态库。
图2-3 数据库软件集成动态库
三、动态库访问变量配置
3.1 指定动态库加载路径
在系统数据库用户的宿主目录的.bashrc或.bash_profile文件配置LD_LIBRARY_PATH变量,指定动态库加载路径。
图3-1 配置LD_LIBRARY_PATH变量
3.2 查看可执行程序的动态库调用
可以通过ldd工具查看可执行程序动态库调用信息。
图3-2 查看可执行程序动态库调用
四、动态库加载失败案例
4.1 专用机环境(中科方德)启动数据库缺少动态库
 问题现象:
专用机环境,sys_ctl启动数据库,提示动态库不兼容。

如上图所示:在sys_ctl启动数据库时,出现动态库不兼容问题。

 解决方法:
1) 查看sys_ctl工具调用动态库

如上图所示:libc.so.6的动态库从/lib64下调用,而报错信息中的libxml动态库从数据库自带的lib下调用,并且GLIBC版本不匹配。
2)修改libxml动态库的调用路径

如上图所示,从lib64目录下链接libxml动态库到数据库lib目录下后,启动数据库正常。

4.2 UOS系统下ksql应用缺少动态库”libtinfo.so.5“问题
适用版本: V8R3/R6 (UOS Server 20)
问题描述: ksql在应用时,提示”can not open shared object file:libtinfo.so.5”。
问题现象:

问题分析: 执行ldd -r ksql查看ksql缺少的动态库,find查找缺少的动态库。
问题解决:
UOS操作系统ksql找不到libtinfo.so.5文件,在/usr/lib/mips64el-linux-gnuabi64/libtinfo.so.6,在/usr/lib/mips64el-linux-gnuabi64/目录下做一个软链接就可以的。
执行:ln -s libtinfo.so.6 libtinfo.so.5,然后重启动应用程序。
五、总结
对于数据库可执行程序启动时,缺少动态库的问题,一般可以按照以下步骤解决:
1) 首先通过ldd命令查看可执行程序需要加载的动态库。
2) 检查LD_LIBRARY_PATH变量配置是否正确。
3) 通过find命令查找缺失的so动态库文件。
4) 建立查找到的动态库文件到数据库系统lib目录下的软链接。
5) 重新启动应用程序。
6) 如果不能找到缺失的动态库,需要安装相应的软件包。

参考文档:
《基于Linux系统的数据库软件安装指南》

标签:金仓,调用,lib,数据库,libtinfo,动态,KingbaseES,可执行程序
来源: https://blog.csdn.net/Kingbase_/article/details/123070050

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有