暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

如何解决库文件缺失问题

原创 jack 2022-02-28
1720
金仓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 版本。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论