老婆最大

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

  这个问题是我在修改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脚本,不是程序。

 

posted on 2012-11-01 11:45  milocode  阅读(115)  评论(0)    收藏  举报