这个问题是我在修改sphinx源码的时候碰到的,当时的情况是这样的,我使用了icu、libiconv、mmseg、curl四个开源库,当时由于要部署到4台搜索服务器上,而每台机器可能这些库并没有安装,所以,我就想再安装sphinx的时候,直接给安装了。
问题:
出现的问题是这样的,我把以上库编译好之后,在sphinx的Makefile中,指定了各自的lib路径,编译通过,比如编译出来的 indexer这个程序运行的时候会提示找不到上面的so.使用ldd查看程序确实发现没有...
解决方案:
错误原因:linux程序运行时加载共享库出现的错误: "error while loading shared libraries: xxxx: cannot open shared object file: No such file or directory"
办法:
1、使用find命令查找缺失的xxxx共享库文件所在位置。参考:#find 目录 -name "xxxx*"
2、将找到的目录位置写入 /etc/ld.so.conf 配置文件,这个文件记录了编译时使用的动态链接库的路径。
3、将 /etc/ld.so.conf存档后,还要执行「/sbin/ldconfig –v」来更新一下才会生效。
注:使用 ldd 命令查看程序运行需要哪些库。 该命令用于判断某个可执行的 binary 档案含有什么动态函式库。该命令是一个shell脚本,不是程序。

浙公网安备 33010602011771号