免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19956 | 回复: 7
打印 上一主题 下一主题

程序运行时出现“cannot open shared object file”问题怎么解决? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-17 16:57 |只看该作者 |倒序浏览
编译完程序后出现错误:
     ./a.out: error while loading shared libraries: libresiprocate.so.0: cannot open shared object file: No such file or directory
      用的是第三方提供的库,已经编译成.a文件了,libresiprocate.so.0也与libresiprocate.a文件一样,在/usr/local/lib目录下存在。这是什么问题 ,怎么解决?
      源程序是第三方库中存在的例子,是SIP相关的应用,不知道版上的哥们有没有sip开发的。
      #include <iostream>
#include <memory>

#ifndef WIN32
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#endif

#include "resiprocate/os/Socket.hxx"
#include "resiprocate/os/Logger.hxx"

#include "resiprocate/SipStack.hxx"
#include "resiprocate/SipMessage.hxx"
#include "resiprocate/Uri.hxx"
#include "resiprocate/Helper.hxx"
#include "resiprocate/Transport.hxx"
#include "resiprocate/ParserCategories.hxx"


using namespace resip;
using namespace std;

#define RESIPROCATE_SUBSYSTEM Subsystem::SIP

int
main(int argc, char* argv[])
{
    Log::Level l = Log:ebug;
   
    if (argc > 1)
    {
        switch(*argv[1])
        {
            case 'd': l = Log:ebug;
                break;
            case 'i': l = Log::Info;
                break;
            case 's': l = Log::Stack;
                break;
            case 'c': l = Log::Crit;
                break;
        }
        
    }
   
    Log::initialize(Log::Cout, l, argv[0]);
    CritLog(<<"Test Driver Starting";

   initNetwork();
       
   try
   {
      SipStack sipStack;
      SipMessage* msg=NULL;

      InfoLog ( << "Try to send a message" );
             
      NameAddr dest;
      NameAddr from;
      NameAddr contact;
      from.uri().scheme() = "sip";
      from.uri().user() = "1234";
      from.uri().host() = "localhost";
      from.uri().port() = 5060;
      dest.uri().scheme() = "sip";
      from.uri().host() = "59.64.156.179";
      from.uri().port() = 5060;
      //dest = from;
      //contact = from;
            
      auto_ptr<SipMessage> message = auto_ptr<SipMessage>(Helper::makeRegister( dest, from));
      DebugLog ( << "Sending msg:" << *message );
      sipStack.send( *message );

      while (1)
      {
         FdSet fdset;
         sipStack.buildFdSet(fdset);
         int  err = fdset.selectMilliSeconds( sipStack.getTimeTillNextProcessMS());
         int e = errno;
         if ( err == -1 )
         {
            InfoLog(<< "Error " << e << " " << strerror(e) << " in select";
         }
     

         //DebugLog ( << "Try TO PROCESS " );
         sipStack.process(fdset);

         //DebugLog ( << "Try TO receive " );
         msg = sipStack.receive();
         if ( msg )
         {
            DebugLog ( << "got message: " << *msg);
            msg->encode(cout);          
         }
      }
   }
   catch (Transport::Exception& e)
   {
      InfoLog (<< "Failed to create sip stack" << e);
      exit(-1);
   }
   return 0;

}

论坛徽章:
0
2 [报告]
发表于 2006-03-17 17:03 |只看该作者
ldconfig了吗?

论坛徽章:
0
3 [报告]
发表于 2006-03-17 17:10 |只看该作者

回复 2楼 nnnqpnnn 的帖子

ldconfig干嘛用的,不是很懂,盼指教。我没写makefile,直接用:
  g++ testSipStack1.cpp -I /usr/local/include/resiprocate -L /usr/local/lib -lresiprocate
编译的。

论坛徽章:
0
4 [报告]
发表于 2006-03-17 17:13 |只看该作者

回复 2楼 nnnqpnnn 的帖子

刚baidu了一下,我的系统上(fc3)好象没有这个命令。
bash: ldconfig: command not found

论坛徽章:
0
5 [报告]
发表于 2006-03-17 17:20 |只看该作者

回复 4楼 Alexzha 的帖子

找到了,当还是不知道怎么用。

论坛徽章:
0
6 [报告]
发表于 2006-03-17 17:36 |只看该作者
搞定了,谢谢!

论坛徽章:
0
7 [报告]
发表于 2012-03-14 14:35 |只看该作者
怎么搞定的为什么不说一下?

论坛徽章:
0
8 [报告]
发表于 2012-03-14 15:41 |只看该作者
为自问自答的lz鼓掌
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP