在Windows下編譯WebRTC

來源:互聯網
上載者:User

標籤:csdn   toolchain   force   google   line   targe   epo   blank   python   

前言

這篇文章的目的在於為你節省生命中寶貴的10小時(甚至更多),或者浪費你10分鐘。作為Google更新頻繁的大型跨平台基礎庫,WebRTC的編譯一直被人稱為噩夢。如果恰巧你偏要在Windows下編譯WebRTC,那麼你最好提前對自己的耐心做充分的評估。

截止目前,我嘗試過中文部落格社區裡幾乎所有的文章,可以說全部失效了。我不知道這篇文章的有效期間有多久,因為webrtc.org社區的傢伙們更新實在太勤奮了!

環境 

OS:Microsoft Windows 7 Ultimate 6.1.7601 Service Pack 1 Build 7601

你只需要一台Win7 64機器即可,其他一概用WebRTC提供的就行。如果使用WebRTC內建的編譯工具鏈的話,宿主機器已安裝的Python和VS等等與WebRTC可以做到毫不相關,請不要被某些文章蒙蔽。

開啟VPN

原因你懂的。推薦挑一個快點的TW或JP節點,保持網路通暢。

安裝depot_tools

使用SVN checkout

  1. http://src.chromium.org/svn/trunk/tools/depot_tools

然後運行depot_tools\gclient.bat,這個指令碼會觸發檢測邏輯,自動下載python276_bin和git-1.9.0.chromium.6_bin。

至此,我假設depot_tools已經安裝完畢。如果沒有,請關閉這個頁面,然後自行Google。

檢出WebRTC代碼

建立一個檔案夾,名叫WebRTC,然後建立一個bat指令碼,寫入:

  1. set PATH=[你的depot_tools路徑,比如C:\depot_tools];%PATH%
  2. call gclient.bat config --name src http://webrtc.googlecode.com/svn/trunk
  3. call gclient.bat sync --force
  4. set GYP_GENERATORS=msvs
  5. call python src/webrtc/build/gyp_webrtc -G msvs_version=2013

儲存,然後雙擊執行。接著是漫長的等待,10MB寬頻情況下我等了3個小時。期間控制台會一直顯示still working on src,事實上,這時有幾個G的東西等待下載。官網的說明夠迷惑人的,這個指令碼應該最大程度上簡化了問題。

注意,指令碼中最後一句的意思是產生VS的編譯檔案(.sln),這會觸發gclient自動下載vs2013 express版的核心檔案,所以不需要宿主機器上原先安裝的VS。

指令碼運行完畢後,src目錄下應該出現了許多檔案和目錄,其中就有all.sln。

編譯下載DirectX開發包

DirectX SDK June 2010 http://www.microsoft.com/en-us/download/details.aspx?id=6812 ,解壓備用。

使用VS2013編譯(不推薦)

直接雙擊all.sln開啟,為每一個子模組添加include:DXSDK\Include和library:DXSDK\Lib;depot_tools\win_toolchain\vs2013_files\wdk\lib\Atl\amd64 。

由於模組非常非常多,所以不推薦。

使用Ninja編譯

Ninja是Chromium社區開發的一套build system,不要害怕陌生的Ninja,很快你就會愛上它,並且對VS心生厭倦。

編譯前依然要搞定DirectX SDK,這次直接將DXSDK\Include複製到depot_tools\win_toolchain\vs2013_files\VC\include,DXSDK\Lib複製到depot_tools\win_toolchain\vs2013_files\VC\lib。這麼做簡單粗暴,方便高效。

使用Ninja編譯的話,我也提供一個方便的指令碼:

  1. @Echo Off 
  2. :: hankcs
  3. title Hankcs‘s program
  4. CD\ 
  5. %~d0
  6. CD %~dp0
  7. set PATH=[你的depot_tools路徑,比如C:\depot_tools];%PATH%
  8.  
  9. del ninjia.log
  10. ninja -C out/Release >> ninjia.log

儲存為bat,放到WebRTC\src目錄下執行。

如果遇到了類似下面的錯誤:

  1. error c2220: warning treated as error - no ‘object‘ file generated
  2. ...
  3. ‘utf8‘ codec can‘t decode byte 0xd1 in position 0: invalid continuation byte

請在控制台中修改語言為所示:

然後再次運行,你會發現error c2220神奇地消失了。

運行

一切順利的話,WebRTC\src\out下會出現四個檔案夾,

說明編譯成功。

編譯完了之後我想說,他娘的編譯一下就這麼麻煩,做這玩意得多難啊,人與人的差距真他娘大。

Reference

http://www.webrtc.org/reference/getting-started

http://egamesir.blog.163.com/blog/static/188096088201362411524585/

http://blog.csdn.net/choday/article/details/19978427

在Windows下編譯WebRTC

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.