編譯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. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM