如何解决库文件缺失问题?

注:以上问题都是由于so文件无法找到或缺失导致。

TIPS

我们通常把一些公用函数制作成函数库,供其他程序使用。函数库分为静态库和动态库两种。两者对比:

KingbaseES如何找so文件/strong> 

金仓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,此文件保存已排好序的动态链接库名字列表。

 真实场景应用 

实例1:动态库版本不兼容

如在initdb时,提示libstdc++版本不兼容。

验证操作系统 libstdc++.so.6 文件,确认确实不包含kingbase程序所需要的 CXXABI_1.3.8 版本。

从这个错误信息看,ksql 去连接5432端口,而5432 端口是PostgreSQL默认运行的端口,怀疑用户使用了错误lib库文件。

确认已链接到正确的libpq文件。验证ksql连接正常:

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树使用JDBC操作数据库数据库操作92347 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月22日
下一篇 2022年1月22日

相关推荐