ubuntu14.04編譯webrtc

參考如下的文章做,基本上就可以了。

我本人是驗證過了的。


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

根據他人下載好的代碼編譯

// 如下內容大部分是轉載的,我加上了少量需要注意的地方

整整快一年沒有寫博客了,最近基於Google開源的WebRTC項目做了一款音視頻聊天的即時通信項目,期間在下載WebRTC代碼時就碰到了一些問題,在此以作記錄,也希望能夠幫助到正在下載編譯WebRTC代碼中碰到類似問題的童鞋們


1). 準備環境

1. Ubuntu14.04 LTS 系統

2. 準備一個穩定的速度還可以的VPN 或者 VPS ,這個很重要,大家都懂,大部分下載代碼失敗都是因爲訪問google服務失敗導致的.(本人用的Digital Ocean, 之前試過幾個VPN都以失敗而告終,蛋都碎了,要麼是不穩定,要麼速度非常慢,最長一次用了15個小時都沒有下載成功)

3. 安裝下載$編譯webrtc代碼所需工具

a. jdk (本人用的  sun jdk1.6.0_45)

jdk下載路徑:  http://ghaffarian.net/downloads/Java/JDK/

配置到環境變量中

b. git  ( 版本 1.9.1 ) 

安裝:  sudo apt-get install git

c. gclient 

1.安裝: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

2.配置到環境變量中 ,至於怎麼配置,不知道的google一下

// Begin -- add by oldmtn

和配置jdk路徑差不多,就是將depot_tools的路徑加到/etc/profile裏面

// End -- add by oldmtn

d. 安裝如下工具 ( sudo apt-get install ..) 

g++ (>= 4.2)

python (>= 2.4)

libnss3-dev >= 3.12

libasound2-dev

libpulse-dev

libjpeg62-dev

libxv-dev

libgtk2.0-dev

libexpat1-dev

For 32-bit builds on a 64-bit system:

lib32asound2-dev

ia32-libs


2). 下載代碼

1.同步WebRTC代碼

1.創建WebRTC目錄 

mkdir WebRTC

cd WebRTC

2.初始化gclient

gclient config http://webrtc.googlecode.com/svn/trunk

3. 設計目標系統版本的配置

echo "target_os = ['android', 'unix']" >> .gclient

4. sync代碼

gclient sync --nohooks

( 煎熬的一步,我同步下來的代碼有7.1G之大,裏面包括NDK、SDK等其他tools   之前用VPN都敗在這裏,後來用VPS,只用了6分多鐘,哎,說點什麼呢......尼瑪,國內程序員就是苦逼)  

注意,若長時間出現  Still working on等信息,請不要中斷或者關閉,它依然在運行,如果你這裏中斷了,那麼之前下載的東西會全部刪除,然後又得重新sync一遍


3). 編譯代碼

1.設置編譯環境

1. cd trunk

2. source ./build/android/envsetup.sh

3.export GYP_DEFINES="$GYP_DEFINES OS=android"

2. 下載編譯所依賴的包或工具,(這裏又會下載一大堆東西 如 Ant.)

./build/install-build-deps.sh  (trunk目錄下)

// Begin -- add by oldmtn

這裏除了要安裝ant外,還需要安裝svn

// End -- add by oldmtn

3. gclient runhooks --force (下載編譯所需的build文件等信息)

4. 編譯 ( trunk目錄下 )

編譯Debug版:  ninja -C out/Debug

編譯Release版: ninja -C out/Release


參考:

1. http://blog.csdn.net/chenyafei617/article/details/38085409



根據官方網站編譯

這部分就不寫,只要把官方的內容讀透了,基本上就沒有問題的。


問題:官方編譯的靜態庫不完全

比如libcommon_audio.a這個靜態庫,根據官方內容,不做任何修改,其大小爲:13.3KB,很明顯,這個靜態庫有問題。
在我調整編譯選項後的libcommon_audio.a的大小爲692.3kb。這個問題困擾我好久,好了好幾天才解決。

辦法:找到ninja.py(webrtc_android/src/chromium/src/tools/gyp/pylib/gyp/generator),大概1200行左右找到alink_thin,改爲alink.
然後重新執行webrtc_android/src/webrtc/build/gyp_webrtc生成ninja腳本文件。再編譯就可以了。

參考:(前面幾個給出了問題的原因,特別是5給出瞭解決方案)
1. https://review.webrtc.org/1349004/
2. https://groups.google.com/forum/#!msg/discuss-webrtc/dkfCMWaddXg/P4voT-h-9P0J
3. https://groups.google.com/forum/#!topic/discuss-webrtc/dkfCMWaddXg
4. https://bugs.chromium.org/p/webrtc/issues/detail?id=1807
5. http://cdn.verydemo.com/demo_c441_i128225.html


問題:編譯動態庫

在gyp中添加flags -visibility=default


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章