注:以上问题都是由于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进行处理,非常感谢!