如何解决库文件缺失问题?
haoteby 2025-01-07 12:58 1 浏览
磁盘坏道、机房断电、服务器遭遇病毒、运维人员误操作等,会造成数据库文件缺失;环境变量设置有误、版本不适配,也会导致库文件丢失。这些情况一旦遇上就是“惊心动魄”的大事,直接影响业务系统的正常运转。
作为保存和管理数据的IT系统软件,数据库在实际应用中会遇到库文件缺失问题,那如何快速解决并保证系统稳定运行呢?
先了解一个重要的专业术语----动态链接库(Dynamic Link Library,简称DLL),它是可以被其他应用程序共享的文件,其中封装了一些能被共享的例程和资源。
在Linux系统下,DLL文件的扩展名是so。对于DLL,由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。相对于动态链接,静态链接是指把要调用的函数或过程在编译时链接到可执行文件中,成为可执行文件的一部分。如果DLL编译时没有被编译进目标文件中,当程序执行到对应的函数时,会调用该函数库里的相应函数。如果缺少相应的动态库文件,程序运行失败。
TIPS:我们通常把一些公用函数制作成函数库,供其他程序使用。函数库分为静态库和动态库两种。两者对比:
KingbaseES如何找so文件?
金仓KingbaseES 在编译中使用 -r path 参数告诉编译器,编译生成可执行文件时记住库的位置,运行时不需要再设置这个动态库的位置。但工作中经常会遇到找不到so文件的问题,这就需要设置LD_LIBRARY_PATH环境变量。 LD_LIBRARY_PATH:动态库的查找路径
方法一:
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 注意:退出当前终端后就失效
方法二:
修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile在其中添加例如exportLD_LIBRARY_PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)
方法三:
没有修改LD_LIBRARY_PATH,但效果是一样的实现动态库的查找。
1)/etc/ld.so.conf下面加一行,如: /usr/local/mysql/lib
2)保存后执行 ldconfig 生效。ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。
库文件缺失的解决思路有哪些?
敲黑板!KingbaseES库文件缺失,操作思路有以下重要的三点:
01)如果执行命令,如 ksql,报“error while loading shared libraries” ,可以先执行:ldd path/ksql ,确认丢失的库文件名;
02)先到 Server/lib 路径下寻找,如果有对应的库文件,那可能是 LD_LIBRARY_PATH 环境变量问题,需要设置该环境变量;
01)如果Server/lib 路径下没有,再找 /lib64 , /lib 目录。注意:即使 /lib64 或 /lib 目录下有同样的库文件名,也未必可用,因为这些文件可能是PG的。
真实场景应用
实例1:
动态库版本不兼容如在initdb时,提示libstdc++版本不兼容。
确认kingbase所链接的库的位置:
验证操作系统 libstdc++.so.6 文件,确认确实不包含kingbase程序所需要的 CXXABI_1.3.8 版本。
问题分析:这种情况通常由于软件在编译时,libc版本较高,而用户现场的版本较低,导致版本不兼容的情况。需要用户现场升级操作系统版本。 实例2:错误设置LD_LIBRARY_PATH
ksql 连接数据库时,报错如下:
从这个错误信息看,ksql 去连接5432端口,而5432 端口是PostgreSQL默认运行的端口,怀疑用户使用了错误lib库文件。
果然,ksql 使用了/lib64 下的libpq文件,而这个文件是操作系统安装时带入的PostgreSQL文件。修改LD_LIBRARY_PATH环境变量,指向 /opt/kb86/ES/V8/Server/lib目录。
确认已链接到正确的libpq文件。验证ksql连接正常:
总结:针对数据库可执行程序启动时缺少动态库的问题,可按照以下步骤可解决
首先通过ldd命令查看可执行程序需要加载的动态库;
检查LD_LIBRARY_PATH变量配置是否正确;
通过find命令查找缺失的so动态库文件;
建立查找到的动态库文件到数据库系统lib目录下的软链接;
重新启动应用程序;
如果不能找到缺失的动态库,需要安装相应的软件包。
相关推荐
- 用户界面干货盘点
-
为了解决大家找资源难的问题,EVGET特别开辟每周盘点用户界面干货的专栏,一网打尽热门的界面资讯、Demo示例、版本升级及下载、移动Web开发,以及各种UI神器推荐。更多资源及工具也可以在用户界面专题...
- 不仅仅是创意,26款科技小玩意
-
新科技不断在卖场出现,总是吸引着消费者的眼球。许多很棒的科技小玩意儿被发明,手机、平板、手提电脑、游戏主机、甚至是3D打印都适用。现在的初创公司已经发正在让21世纪打破各种科技壁垒障碍。本文收集26...
- FastReport.Net报表设计器如何连接到SQLCe
-
MicrosoftSQLServerCompactEdition是一个简单的本地关系数据库,不需要安装,并且已与数据库文件建立连接。您不需要管理员权限即可使用基础功能。您也只能“密码”基础功能...
- 2015年最值得关注的8款用户界面新品
-
软件界面开发解决方案这一块一直以来是慧都控件(EVGET)的强项,我们有400多款用户界面产品,250多款图表报表产品,此外还提供专业的软件界面定制开发服务,其中DevExpress定制开发、甘特图定...
- 小贴士:安装TBarCode office的注意事项和相关资源
-
TBarCodeoffice是一款适用于MicrosoftWord2007、2010等版本,具有强大功能的条码插件。在这里我们介绍一下安装TBarCodeoffice的注意事项和相关资源。安装...
- 初学者不容错过的修复Bug小技巧
-
Bug的发生,我想这是每个开发人员几乎每天都要面对的问题,包括历史上非常有名的编程人员,他们依旧要面对Bug。成为一个熟练的程序员并不意味着永远不会犯错误,而是擅于发现错误并能很好地修正错误。当你刚开...
- 【推荐】一款基于 .NET 开源的支持多厂区、多项目级的MOM/MES系统
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍tmom是一款基于.NET开源、通用的生产制造系统,支持多厂区/多项目级的MOM/MES系统,计划排程...
- 你不可不知的10个Github功能
-
Github让全世界的开发人员、设计人员可以在一起工作交流。Github不仅提供大量开源项目、编程语言代码,他也发布过Windows和OSX桌面应用,可以让我们在工作中无缝集成Github。...
- Fastreport.Net用户手册(十四):文本编辑
-
编辑对象的文本,只需双击文本内容,然后会弹出一个文本编辑器。在编辑器右方有一个可以添加至文本中的数据树组件。可以通过鼠标拖拽该组件到需要的地方。在文本中嵌入该组件的另一个方法是双击该组件,然后该组件将...
- 火狐浏览器开发者专版上手体验
-
当Mozilla宣布FirefoxDeveloperEdition,我想不少开发者都很高兴,因为第一个大型开发者专用浏览器诞生了。既然是开发者专用版,那么和普通版本肯定是不一样的。早已经迫不及待...
- FastReport.Net 2015.3.3 优化了报表解析器
-
FastReport.Net2015.3.3于近日正式发布。点击FastReport.Net2015.3.3下载试用FastReport.Net最新版本。[Core][Exports]重写保存在...
- 改变上网体验:10个超赞的Google Chrome扩展
-
你使用谷歌浏览器浏览网页吗?其实,全世界数以百万的用户都喜欢使用GoogleChrome浏览网页,这也促使其成为全球使用量第二大的Web浏览器。GoogleChrome浏览器具有快速、干净的页面,...
- 如何在 FastReport Online Designer 中处理报表的 5 个函数
-
FastReports产品的时代并没有停滞不前。每个月都会添加新的函数和对象,并改进和优化当前的代码。FastReportOnlineDesigner...
- Winform应用界面开发技术特点图解
-
整理一下自己之前的Winform开发要点,以图文的方式展示一些关键性的技术特点,总结一下。...
- 跨平台的可视化Web报表设计器-FastReport Online Designer
-
好消息!FastReportOnlineDesigner现在作为一个独立的应用程序发布啦!此前作为FastReport.Net的专业版的一部分的在线设计测试版,现在可以单独或作为FastRepor...