编译libjingle的问题

Posted

技术标签:

【中文标题】编译libjingle的问题【英文标题】:problem compiling libjingle 【发布时间】:2011-07-11 11:17:48 【问题描述】:

我下载并安装了libjingle-0.5.2.zip,根据README还下载并安装了swtoolkit.0.9.1.zip、scons-local-2.1.0.alpha.20101125.tar.gz和expat -2.0.1.tar.gz,通过cvs下载得到nrtp。在覆盖了我的 Makefile 两次后,尝试遵循写得相当糟糕的 README,我想出了以下几乎可以工作的 Makefile:


# First, make sure the SCONS_DIR environment variable is set correctly.
SCONS_DIR ?= /usr/src/scons-local/scons-local-2.1.0.alpha.20101125/
#SCONS_DIR ?= /usr/src/scons-local/
export
default: build
# Second, run talk/third_party/expat-2.0.1/configure...
talk/third_party/expat-2.0.1/Makefile:
    cd talk/third_party/expat-2.0.1 && ./configure
# ...and talk/third_party/srtp/configure.
talk/third_party/srtp/Makefile:
    cd talk/third_party/srtp && ./configure
# Third, go to the talk/ directory and run $path_to_swtoolkit/hammer.sh. Run
# $path_to_swtoolkit/hammer.sh --help for information on how to build for
# different modes.
build: talk/third_party/expat-2.0.1/Makefile talk/third_party/srtp/Makefile
    cd talk && ../../swtoolkit/hammer.sh
help:
    ../swtoolkit/hammer.sh --help

但是,make 给了我以下错误:

jcomeau@intrepid:/usr/src/libjingle-0.5.2$ make cd 谈话 && ../../swtoolkit/hammer.sh *** 加载 site_init 文件 './../../swtoolkit/site_scons/site_init.py' 时出错: AttributeError:“Dir”对象没有属性“endswith”: 文件“/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py”,第 1338 行: _exec_main(解析器,值) 文件“/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py”,第 1302 行: _main(解析器) 文件“/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py”,第 929 行: _load_site_scons_dir(d.path,options.site_dir) 文件“/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py”,第 719 行: 在 site_m 中执行 fp 文件“./../../swtoolkit/site_scons/site_init.py”,第 455 行: SiteInitMain() 文件“./../../swtoolkit/site_scons/site_init.py”,第 451 行: SCons.Node.FS.get_default_fs().SConstruct_dir,无) 文件“/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py”,第 677 行: site_dir = os.path.join(topdir, site_dir_name) 文件“/usr/lib/python2.6/posixpath.py”,第 67 行: elif path == '' 或 path.endswith('/'): 制作:*** [构建] 错误 2

我猜测其中一个包中的一些新内容(“Dir”对象是 POSIX 路径字符串所期望的位置)正在破坏构建过程,但是哪一个呢?这里有太多的杂物让我无法理解。当然,我可以继续尝试较旧的软件包,特别是对于 swtoolkit 和 scons,但如果这里有人成功编译了 libjingle 并且可以向我推荐正确的方向,我将不胜感激。

【问题讨论】:

你最好向上游开发者询问编译问题。 可能。我把这个发布到谷歌语音论坛,它消失了。我会再试一次。 它再次出现。不过,从第一反应来看,我对在该论坛上获得任何帮助并不太乐观:google.com/support/forum/p/voice/… 我在 libjingle 0.4 版本的时候和它打过架。似乎没有任何改变......我最终决定使用 farsight,一个用于 libjingle 的 gstreamer 包装器。它更容易使用。 【参考方案1】:

我不熟悉这个项目,但我想我有一个解决方案可以让你超越这一点。您需要在 swtoolkit/site_scons/site_init.py 中使用 str() 转换这些 Dir 实例。这样他们就可以被path.endswith('/') 安全地评估。奇怪的是,这样的问题在构建基础设施的主要部分会存在很长时间:

第 330 行:

SCons.Script.Main._load_site_scons_dir(
    str(SCons.Node.FS.get_default_fs().SConstruct_dir), site_dir)

第 450 行:

SCons.Script.Main._load_site_scons_dir(
    str(SCons.Node.FS.get_default_fs().SConstruct_dir), None)

【讨论】:

【参考方案2】:

我为构建 libjingle 做了以下工作:

为 Linux 构建 LibJingle

    如何构建

Libjingle 是用 swtoolkit (http://code.google.com/p/swtoolkit/) 构建的,它 是开源 SCons 构建工具 (http://www.scons.org) 的一组扩展。

首先,从http://www.python.org/ 安装 Python 2.4 或更高版本。 请注意,由于 swtoolkit 仅适用于 Python 2.x,因此您将 无法使用 Python 3.x。

其次,安装独立的 scons-local 包 2.0.0 或更高版本 http://www.scons.org/download.php 并设置环境变量, SCONS_DIR,指向包含 SCons 的目录,例如, /src/libjingle/scons-local/scons-local-2.0.0.final.0/

第三,从http://code.google.com/p/swtoolkit/安装swtoolkit。

最后,Libjingle 依赖两个开源项目 expat 和 srtp。 从http://sourceforge.net/projects/expat/下载外籍人士到 谈话/third_party/expat-2.0.1/。按照说明进行操作 http://sourceforge.net/projects/srtp/develop 下载最新的srtp到 谈话/第三方/srtp。请注意,srtp-1.4.4 不起作用,因为它错过了 Libjingle 使用的扩展。 如果将 expat 或 srtp 放在不同的目录中,则需要编辑 talk/libjingle.scons 对应。

2.1 在 Linux 或 OS X 下构建 Libjingle

首先,确保SCONS_DIR 环境变量设置正确。 其次,运行talk/third_party/expat-2.0.1/configuretalk/third_party/srtp/configure。 第三,进入talk/目录并运行$path_to_swtoolkit/hammer.sh。跑步 $path_to_swtoolkit/hammer.sh --help 获取有关如何构建的信息 不同的模式。

除上述步骤外,参考以下内容

设置 SCONS_DIR 路径

export SCONS_DIR=/home/esumit/libjingle/libjingle-0.5.2/talk/third_party/scons-local/scons-local-2.0.1

安装libasound2-devlib编译libJingle,否则会报错。

sudo apt-get install libasound2-dev

使用以下命令下载 SRTP。如果它要求输入密码,只需按 Enter。

cvs -z3 -d:pserver:anonymous@srtp.cvs.sourceforge.net:/cvsroot/srtp co -P srtp

LibJingle 目录中可能的组件

libjingle-0.5.2/talk/third_party$ ls
expat-2.0.1  libudev  scons-local  srtp  swtoolkit

执行以下命令构建LibJingle

libjingle-0.5.2/talk$ ./third_party/swtoolkit/hammer.sh

【讨论】:

+1 谢谢苏米特。我很高兴它现在“开箱即用”,当我发布问题时它没有回来。

以上是关于编译libjingle的问题的主要内容,如果未能解决你的问题,请参考以下文章

编译libjingle的问题

为 Mac OS X 编译 libjingle/gtk+-2.0 的问题

添加新文件后的铬编译

WebRTC iOS平台的基本实现

WebRTC 如何使用 libjingle?

我在哪里可以获得最新的 libjingle?