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呀;你那個名字是你自己給的?