• 编译WebRTC


    http://white313.blog.163.com/blog/static/2102620116314827580/



    在某篇对google敬仰的日志中,已经提到过WebRTC,具体介绍不不说了,网上一大摞,今天讲讲怎么编译WebRTC。
    在项目源码中,并没有直接提供解决方案(sln)和工程文件,是因为WebRTC和Chromium一样,使用了depot_tools这个工具用来自动生成项目文件。Google也能搜索出一堆的编译方案,但基本上就是对https://sites.google.com/site/webrtc/reference/getting-started的翻译。其实还应该有几个前置步骤,由于depot_tools需要用到python,svn和git,所以必须安装这几个软件,如果没做的话,是无法正确得到工程文件进行编译的,下面是适合小白的完整步骤:
    1. 下载安装svn客户端,例如TortoiseSVN    安装完后,svn执行目录自动被添加入系统环境变量PATH中。
    2. 下载并安装msysgit和Tortoisegit    msysgit:http://code.google.com/p/msysgit/downloads/list                选择Git-1.7.4-preview20110204.exe,下载并安装    Tortoisegit:http://code.google.com/p/tortoisegit/downloads/list                选择适合自己系统的版本,下载并安装(注:Tortoisegit只是一个gui,必须安装msysgit)                Tortoisegit安装时会找到git目录并自动配置好。    把msysgit中bin目录手动添加到系统环境变量PATH中,比如我的目录是“D:/Program Files/Git/bin”    3. 下载并安装Python,建议安装Python2.6    安装后Python执行目录自动被添加入系统环境变量PATH中。
    4. 下载并配置depot_tools    建立一个存放depot_tools的目录,command进入该目录    svn co http://src.chromium.org/svn/trunk/tools/depot_tools    下载后把depot_tools目录手动添加到系统环境变量PATH中
    5. 建立WebRTC的源码目录    比如D:/WORK/OTHER/WebRTC/
    6. 打开cmd,进入第5步建立的源码目录
    7. 执行:  gclient config https://webrtc.googlecode.com/svn/trunk        或者 gclient.bat config https://webrtc.googlecode.com/svn/trunk
    8. 执行:  gclient sync --force        或者 gclient.bat sync --force
    9. 执行:  gclient runhooks --force        或者 gclient.bat runhooks --force
    10. 源码目录下应该已经含有webrtc.sln注:webrtc会用到Windows SDK 7.1,如果不想安装SDK,可以从这里下所依赖的文件:svn co http://vsfiltermod.googlecode.com/svn/trunk/src/BaseClasses,然后把文件放置在这个路径:C:/Program Files/Microsoft SDKs/Windows/v7.1/Samples/multimedia/directshow/baseclasses (感谢乐得思蜀的方案)       我的系统为Windows 7 32bit,不知为何在第8步只能执行gclient.bat sync --force才成功,直接执行gclient sync --force无法成功。       另外如果你只安装了Visual Studio 2010,那么在gclient sync --force执行到最后会提示"Do not know how to convert MSVS attribute UseOfMFC",可能对2010支持还不好,因为我系统里还有Visual Sduidio 2005,所以没有碰到这个问题,但是不用担心,因为最终的webrtc.sln照样会生成的,不影响看代码。       如果遇到git --version return 1错误,应该是git目录没配置到PATH环境变量中,配置好后重启机器。
    ---------------------------------------------------华丽的分割线------------------------------------------------------
    以上即为Windows下面的步骤,下面提供Mac OS X上的步骤:1. 安装svn    Mac OS X Leopard已经默认安装了svn
    2. 安装git    从http://code.google.com/p/git-osx-installer 上下载最新安装包,安装即可
    3. 安装python   Mac OS X Leopard已经默认安装了Python 2.6.1
    4. 下载并配置depot_tools    建立一个存放depot_tools的目录,command进入该目录    svn co http://src.chromium.org/svn/trunk/tools/depot_tools    下载后把depot_tools目录手动添加到系统环境变量PATH中:    sudo vim /etc/paths    把depot_tools的目录写入paths,保存该文件
    5、6、7、8、9步骤和windows上的操作步骤一样(第8步执行gclient sync --force)
    10. 源码目录下应该已经有xcode的工程文件了。
    注:设置环境变量后,需要重新打开命令行工具,否则当前命令行是找不到新添的环境变量的。

    控制版本:

     set GYP_MSVS_VERSION=2008 
    gclient runhooks --force

    这样可以 变成 2008的版本 

    如果安装svn,python不成功:

    regsvr32 %windir%\system32\zipfldr.dll

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    /*************************************************For android************************************************/

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    [ZZ]build WebRTC for android

    http://blog.csdn.net/mahout_xb/article/details/7634007

    OS: Ubuntu 10 x64

    1.安装svn和git

    sudo apt-get install subversion

    sudo apt-get install git

    2. 安装Depot Tools

    下载 https://sites.google.com/a/chromium.org/dev/developers/how-tos/depottools

    添加depottools的主目录到PATH

    命令行输入gclient测试是否安装成功

    3.安装android NDK和SDK

    下载NDK和SDK,见android网站

    并配置环境变量:

    export ANDROID_SDK_ROOT=/usr/local/google/bin/android-sdk-linux

    export ANDROID_NDK_ROOT=/usr/local/google/bin/android-ndk-r7

    4.下载WebRTC的源代码

    gclient config https://webrtc.googlecode.com/svn/trunk
    gclient sync


    5.安装依赖的库

    进入webrtc源码,执行脚本:./build/install-build-deps.sh

    6.编译

    source ./build/android/envsetup.sh

    gclient runhooks

    修改Makefile:

    ARFLAGS.target := crsT  以为ARFLAGS.target ?= crs

    之所以这么做,是因为ar的选项T会带给.o文件带上绝对路经,在编译android test project时

    就会报找不到.a文件的错误

    make

    7.编译android测试工程

    1)生成.so

    cd src/video_engine/main/test/android_test

    ndk-build

    2)将工程导入Eclipse

    此时会发现Android.mk中的src/org/webrtc/videoengine文件夹不存在,

    建立改文件夹,找到这些文件,并拷贝过来

    3)生成apk

    4)安装到android设备,就可以测试了!

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    /*************************************************method 2************************************************/

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    1.下载Google Depot Tools,这是Google 在 Chromium 中就开始使用的分发工具。

    地址:https://sites.google.com/a/chromium.org/dev/developers/how-tos/depottools

    直接下载 depot_tools.zip 并解压即可,将其目录(gclient所在路径)添加到“环境变量|系统变量|Path”中。

    2.安装GIT工具,下载并安装msysgit、Tortoisegit:

    msysgit: http://code.google.com/p/msysgit/downloads/list

    Tortoisegit: http://code.google.com/p/tortoisegit/downloads/list

    选择适合自己系统的版本,下载并安装(注:Tortoisegit只是一个GUI,必须安装msysgit。)把msysgit中bin目录(默认为“C:/ProgramFiles/Git/bin”)手动添加到系统环境变量Path中。Tortoisegit安装时会找到Git目录并自动配置好。

    3.安装VisualStudio 2008,打上Service Pack1补丁包(也可以安装VisualStudio 2010,只是后面的编译过程会稍微麻烦一些)。

    4.安装Microsoft SDK 7.1。确保Lib目录和Include目录在VisualStudio中设置好:

    MSVC|Tools|Options|Projects and Solutions|VC++Directories (e.g. C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib). 

    5.安装Microsoft DirectX SDK(June 2010),在“MSVC|Tools|Options|Projects and Solutions|VC++Directories”保证Include目录“$(DXSDK_DIR)include” 和 Lib目录“$(DXSDK_DIR)lib\x86”已被添加。

    注意:DirectX的“Include”目录要出现在搜索路径的第一个,否则可能会出现问题。

    6.安装Python2.X版本,将Python安装目录添加到系统环境变量Path中。

    在“MSVC|Tools|Options|Projects and Solutions|VC++Directories|Executable files”中添加Python安装目录(e.g. C:\Python27). 

    7.创建一个工作目录,例如“webrtc”,在命令提示符里进入该目录。

    在命令提示符下运行如下命令,获取WebRTC的源码:

    $ gclient confighttp://webrtc.googlecode.com/svn/trunk  

    $ gclient sync --force  

    $ gclient confighttp://webrtc.googlecode.com/svn/trunk
    $ gclient sync --force
    

    或者:

    $ gclient.bat confighttp://webrtc.googlecode.com/svn/trunk  

    $ gclient.bat sync --force  

    $ gclient.bat confighttp://webrtc.googlecode.com/svn/trunk
    $ gclient.bat sync --force
    

    这时会自动先安装subvison和其他必须的环境,其中“sync”命令还能创建开发环境(Linux:make, OSX:XCode, Windows: Visual Studio),如我们这里最关心的是 MSVisual Studio 的解决方案(trunk/webrtc.sln)。我们也可以手工通过下面的命令手工生成开发环境:

    $ gclient runhooks --force  

    $ gclient runhooks --force

    如果需要指定 MS Visual Studio 的版本,请在“gclient”前先如下调用:

    set GYP_MSVS_VERSION=2008  

    set GYP_MSVS_VERSION=2008

    源码目录下应该已经含有webrtc.sln,用 Visual Studio 打开即可,编译的时候可能会有些小问题,应该都是目录相关的,按照自己的环境重新设定一下即可。例如我这里按下面所指改动有问题的工程即可,“MSVC|Tools|Options|Projects and Solutions|VC++Directories”: 

    可执行文件:

    C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin  

    C:\Python27  

    C:\Program Files\Microsoft DirectX SDK (June2010)\Utilities\bin\x86  

    C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
    C:\Python27
    C:\Program Files\Microsoft DirectX SDK (June2010)\Utilities\bin\x86
    

    包含文件:

    C:\Program Files\Microsoft DirectX SDK (June 2010)\Include  

    C:\Program Files\Microsoft SDKs\Windows\v7.1\Include  

    C:\Program Files\Microsoft DirectX SDK (June 2010)\Include
    C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
    

    库文件:

    C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib  

    C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86生成的可执行文件位于“\trunk\Debug”下,如“peerconnection_server.exe”和“peerconnection_client.exe”。  

    C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib
    C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86生成的可执行文件位于“\trunk\Debug”下,如“peerconnection_server.exe”和“peerconnection_client.exe”。

    也可以使用HTML的测试页面(trunk/peerconnection/samples/server/server_test.html) 来连接服务器。当只有一个peerconnection_client实例运行时启用lookback可以建立一个与本地和自己的语音/视频会话。

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    error PRJ0019: A tool returned an error code from "copy_enc_offsets_obj, and also copy_dec_offsets_obj, and also copy_com_offsets_obj"gen_asm_offsetsgen_asm_offsets
    error LNK2019: unresolved external symbol "public: static void __cdecl FlagList::Print(char const *,bool)" (?Print@FlagList@@SAXPBD_N@Z) referenced in function _mainmain.objpeerconnection_server
    fatal error C1083: Cannot open include file: 'json/json.h': No such file or directoryf:\PLLWork\wratz\trunk\third_party\libjingle\source\talk\base\json.h35peerconnection_client

    answer:

    It seemed to me that /bin was not mounted anywhere in the cygwin 
    shell. Running third_party\cygwin\setup_mount.bat once helped. 

  • 相关阅读:
    简单的生成编号的存储过程
    表实体上面添加特性获取到连接字符串
    Spring 静态注入讲解(MethodInvokingFactoryBean)
    嵌套的SQL另外一种写法
    微信小程序之列表下拉加载更多
    微信小程序之--->轮播图制作
    javascript变量作用域
    struts2升级报ActionContextCleanUp<<is deprecated。Please use the new filters
    java日期加减
    数字转大写
  • 原文地址:https://www.cnblogs.com/tkppain/p/3123408.html
Copyright © 2020-2023  润新知