LibJingle for Ubuntu 编译

首先安装 subversion client:

 sudo apt-get install subversion subversion-tools 


到官网下载 libjingle repository:
svn checkout http://libjingle.googlecode.com/svn/trunk/ libjingle-0.4.0

或者直接到官网下载源码 libjingle-0.4.0.tar.gz:
wget http://libjingle.googlecode.com/files/libjingle-0.4.0.tar.gz 

uzip libjingle-0.4.0.zip

安装依赖库:
sudo apt-get install libexpat1-dev libglib2.0-dev libogg-dev libssl-dev libasound2-dev libspeex-dev openssl 
 
下载 ortp, speex, iLBC 源码并安装:
wget http://ftp.twaren.net/Unix/NonGNU/linphone/ortp/sources/ortp-0.16.1.tar.gz 
tar zxvf ortp-0.16.1.tar.gz 
cd ortp-0.16.1 
./configure
make
sudo make install 
 wget http://downloads.us.xiph.org/releases/speex/speex-1.0.5.tar.gz 
tar zxvf speex-1.0.5.tar.gz 
cd speex-1.0.5 
./configure
make
sudo make install 
wget ftp://ftp.eenet.ee/pub/FreeBSD/distfiles/ilbc-rfc3951.tar.gz 
tar zxvf ilbc-rfc3951.tar.gz 
cd ilbc-rfc3951 
./configure
make
sudo make install 
编译安装 libjingle:
cd libjingle-0.6.14
./configure --with-ilbc=/usr/local --with-speex=/usr/local
make
sudo make install 

编译的过程,会遇到很多的错误。其中之一是因为 gcc4(使用 gcc --version 查看 gcc 版本)造成的,二是 ortp 的版本问题,另外就是 fileshare 的 bug。
cd libjingle-0.4.0 
wget "http://libjingle.googlecode.com/issues/attachment?aid=-5750252352650129752&name=libjingle-0.4.0-gcc43.patch" -O gcc43.patch 
wget "http://libjingle.googlecode.com/issues/attachment?aid=-673077151193645057&name=ortp.patch" -O ortp.patch 
wget "http://libjingle.googlecode.com/issues/attachment?aid=8593976822449450369&name=libjingle-fileshare.patch" -O fileshare.patch 
patch -p0 < gcc43.patch 
patch -p1 < ortp.patch 
patch -p1 < fileshare.patch 

除了这些 patch,我们还需要手工修改个别文件,就是在下面源码文件头上添加“#include <stdio.h>”即可: 
1.talk/base/logging.cc
2.talk/base/stream.cc
3.talk/p2p/base/stunserver_unittest.cc
4.talk/p2p/base/session_unittest.cc
5.talk/p2p/base/port_unittest.cc
6.talk/session/phone/phonesessionclient.cc
7.talk/session/fileshare/fileshare.cc
8.talk/examples/login/login_main.cc
9.talk/examples/call/call_main.cc
10.talk/examples/call/console.h

再回头编译 Libjingle,就应该没有问题了。“sudo make install”后,库文件位于“/usr/lib”,执行文件位于“/usr/local/bin”。 BTW,我们在测试 pcp 的时候,发现不能成功: 
root001@ubuntu001:~$ /usr/local/bin/pcp
JID: greatfoolbear@gmail.com 
Password: 
Logging in. 
Logged in as greatfoolbear@gmail.com/pcpC10A1532
Receiving 1 files (11.4 MiB) from smartfoolbear@gmail.com 
File transfer started.   
File transfer failed. 
session.cc(377): state_ == STATE_RECEIVEDINITIATE @ ChooseTransport 
Aborted 

这是问题修改“talk/base/unixfilesystem.cc”文件,在函数“UnixFilesystem::GetTemporaryFolderI()”最后加入“return true”,即可: 
bool UnixFilesystem::GetTemporaryFolderI(Pathname &pathname, bool create,const std::string *append) {
   pathname.SetPathname("/tmp");
   if (append) {
     pathname.AppendFolder(*append);
     if (create)
	       CreateFolder(pathname);
   }
   return true;
 } 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值