WebRtc 研究筆記1 Arch linux 環境中下載, 編譯,webrtcarch

來源:互聯網
上載者:User

WebRtc 研究筆記1 Arch linux 環境中下載, 編譯,webrtcarch


開篇第一句,我覺得是最最重要的: 

注意: WebRtc 源碼的編譯基礎工作: 翻牆!  一定要在命令列, 讓Git Svn 等命令訪問到google的伺服器,否則會出現各種異常


參考:

https://groups.google.com/forum/#!forum/discuss-webrtc

等網站



我的環境是 ArchLinux X64,


翻牆的方法:
1.各種VPN
2.修改hosts
3.各種Proxy 伺服器
... 



使用到的軟體包
jdk 1.6 ( jdk1.7 無法編譯), svn, git


環境變數:
// /etc/profile


# java
export JAVA_HOME=/opt/jdk
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=./:${JAVA_HOME}/lib:${JRE_HOME}/lib


# android 
export ANDROID_SDK_ROOT=/opt/android-sdk
export ANDROID_NDK_ROOT=/opt/android-ndk
export PATH=$PATH:${ANDROID_SDK_ROOT}:${ANDROID_SDK_ROOT}/tools:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_NDK_ROOT}


# ant 
export ANT_HOME=/opt/apache-ant
export PATH=$PATH:${ANT_HOME}/bin
export SVN_EDITOR=vim


export classpath=./:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar



//////



1 安裝 depot_tools(gclient)


$ cd /opt
$ mkdir depot_tools
$ cd depot_tools
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

並將 depot_tools 加入 $PATH

export PATH=$PATH:/opt/depot_tools, 加到 /etc/profile 中, 省得每次都輸入



 下載代碼
    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 --force 

同步過程中發現有錯誤,仔細查看,找出錯的地方,

我使用中是翻牆失敗,無法直接存取伺服器., 得出開篇第一段話.



        ( 煎熬的一步,裡麵包括NDK、SDK等其他tools , 我開始後, )  


        注意,若長時間出現  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.)


// 這個在Ubuntu 下的編譯依賴包直接安裝.  Ubuntu 都成事實標準了
// 其它的Linux 看一下這個檔案裡的包,手動安裝吧.
// 我用的ArchLinux  大多數的包都已經安裝. 我少了ncurses包, pacman 手動安裝.
        // ./build/install-build-deps.sh  (trunk目錄下) 


    3. gclient runhooks (下載編譯所需的build檔案等資訊)


    4. 編譯 ( trunk目錄下 )


        編譯Debug版:  ninja -C out/Debug

開始我編譯出錯, 發現自己使用的jdk 1.7 ,改1.6 重新編譯  

ninja -C out/Debug -t clean 


        編譯Release版: ninja -C out/Release




基於以上步驟,如果網路能正常訪問google服務的話,一般都不會出現其他的問題,如果真碰到了問題,不要怕,一般根據錯誤資訊就可以知道相應的原因。自細看出錯資訊,一定能找出問題. 再不知道的google一下.


編譯成功之後 在 out/Debug 或者 out/Release目錄下看到相應的demo安裝包  如Debug目錄下,其中就有 AppRTCDemo-debug.apk 和 WebRTCDemo-debug.apk
這兩個包簽名一下,就可以安裝到Android 裝置中了.




AppRTCDemo程式的代碼就再 trunk/talk/examples/android/ 目錄下




注意,AppRTCDemo 與 WebRTCDemo的區別


WebRTCDemo只是區域網路內的點對點,知道對方的ip就可以對打,  不需要伺服器, 互設對方的ip 地址即可 startCall

 AppTRCDemo是需要伺服器的,可以區域網路,或者廣域網路




我編譯中,還出現找不到 libtinfo.so.5


 error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory


即缺少libtinfo.so.5解決辦法  
解決方案:
安裝 ncurses包(ncurses-libs-5.6)


ln -s /usr/lib/libncurses.so.5 /lib/libtinfo.so.5  


本文是我研究WebRtc中,的筆記整理匯總, 我會持續更新, 希望能對準備研究WebRtc的朋友,有所協助. 


本地地址:  http://blog.csdn.net/hpccn/article/details/38562019 , 轉載請明示.





編譯linux核心,出現__LINUX_ARM_ARCH__ is not defined 的錯誤

檢查arch/arm/Makefile檔案,裡面有__LINUX_ARM_ARCH__的相關定義。

你是要交叉編譯arm平台的linux嗎?如果是的話,請拷貝arch/arm/configs/目錄下的,ARM的CPU相關的設定檔,到核心根目錄,重新命名為.config:
1, cp arch/arm/config/xxx_defconfig .config
2, make menuconfig選擇需要的配置
3, make
 
linux中make ARCH=arm CROSS_COMPILE=arm-926ejs-linux- zImage編譯出現下面錯誤?

你的交叉編譯器指定錯了,一般都是arm-linux-gcc呀;你那個名字是你自己給的?
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.