webrtc在ubuntu14.04上的編譯過程(12.04亦可)
轉自:http://blog.csdn.net/xiangjai/article/details/44409751
一、虛擬機環境搭建
1、安裝ubuntu 14.04虛擬機:
因為可以屏蔽svn版本問題,如果使用14以下版本svn版本是1.7以下的,在不能下載代碼而是使用代碼包的情況下會遇到因為svn版本不能同步的問題。這個時候需要手動升級svn版本到1.8+
2、開啟root登陸:
為了啟用root 帳號(也就是設置一個口令)使用:
sudo passwd root
當你使用完畢後屏蔽root帳號使用:
sudo passwd -l root
這個將鎖住root帳號。
如何在終端模式下切換到root身份?
sudo -s -H
Password:<在此輸入密碼>
編輯:
vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
加入這行,並重啟就行了。
greeter-show-manual-login=true
3、vi無法正常使用改成vim
sudo apt-get install vim
4、安裝ssh(如果不安裝可能會導致win7上的串口登陸連接不上虛擬機)
sudo apt-get install openssh-server openssh-client
vi /etc/ssh/sshd_config
註釋掉 #PermitRootLoginwithout-password,添加 PermitRootLogin yes
#Authentication:
LoginGraceTime120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
重啟 ssh 服務
sudo service ssh restart
5、安裝SVN
sudo apt-get install subversion
6、安裝samba :
參照 http://www.linuxidc.com/Linux/2014-07/104894.htm
7、關閉防火墻
1.關閉ubuntu的防火墻 ufw disable
2.卸載了iptables apt-get remove iptables
8、安裝nfs服務器(可有可無):
#sudo apt-get install nfs-kernel-server
#sudo mkdir /nfsroot
#sudo chmod 777 /nfsroot -R
#sudo chown nobody /nfsroot -R
#sudo /etc/exports添加如下一行:
/nfsroot*(rw,sync,no_root_squash)
#sudo /etc/init.d/nfs-kernel-server restart
至此,NFS服務器安裝成功
二、配置webrtc環境
1、創建文件夾
cd /home/
mkdir webrtc
sudo chmod 777 -R *
cd webrtc/
2、安裝下載$編譯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.svn(1.8.8)
sudo apt-get install subversion
c.gclient
1.安裝: gitclone https://chromium.googlesource.com/chromium/tools/depot_tools.git
如果git不行就使用svn:
svn checkout http://src.chromium.org/svn/trunk/tools/depot_tools
2.配置到環境變量中
vi~/.bashrc
export PATH="$PATH":`pwd`/depot_tools
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 a64-bit system:
lib32asound2-dev
ia32-libs
3、獲取WebRTC 源碼
gclient config http://webrtc.googlecode.com/svn/src
4、設計目標系統版本的配置
echo "target_os = [‘Android‘, ‘unix‘]" >> .gclient
5、同步代碼(一般直接獲取是獲取不到的,只能通過vpn,vps或者FQ)
gclient sync --nohooks
根據設置的平臺(target_os)不同,會下載很多文件,包括NDK&SDK還有其他tools
ps:如果同步不了,可以選擇找一個已經同步好的壓縮包,直接解壓。但是這時候容易碰到使用svn下載是,svn的版本跟源代碼下載時的svn版本不同,導致無法更新的問題。後面會增加手動升級svn的過程。(我選的壓縮包是http://yunpan.cn/cf6qyCJTQ4UhG(提取碼:66d2),他需要被放在/home/webrtc/code/下面,親測,編譯通過)
三、編譯代碼
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目錄下)
如果這步出現錯誤,請參照:
http://www.hankcs.com/program/network/the-pure-script-compile-webrtc-for-android.html
進行腳本編譯(其實只要source android/build.sh& install_dependencies就夠了)然後再做./build/install-build-deps.sh
3. gclientrunhooks --force (下載編譯所需的build文件等信息)
4.編譯 ( trunk目錄下 )
編譯Debug版: ninja -C out/Debug
編譯Release版: ninja-C out/Release
ninja -C out/Debug/ WebRTCDemo
ninja -C out/Debug/ AppRTCDemo
ninja -C out/Release/ WebRTCDemo
ninja -C out/Release/ AppRTCDemo
清除:ninja -C out/Debug -t clean
註意,AppRTCDemo與 WebRTCDemo的區別:
WebRTCDemo只是局域網內的點對點,知道對方的ip和端口號就可以對打, 不需要服務器, AppTRCDemo是需要服務器的,可以局域網,或者廣域網
四、ubuntuFQ
參照:
http://blog.dimpurr.com/ubuntu-gae/ (主要是它)
http://blog.howgo.info/archives/3246.html
http://blog.csdn.net/alanbj/article/details/39828041
五、編譯linux平臺需要的庫(linux平臺需要的庫即.a文件)
linux下默認應用ninja, 若是須要應用make的話, 指定 exportGYP_GENERATORS=make
ps:android只支撐ninja編譯。
命令:(trunk或者src目錄下)
exportGYP_GENERATORS=make
gclient runhooks(這步不能少)
make
待make完成後你應該能在trunk/out/debug目錄下發現大量 .a格式的文件。
錯誤解決:make:*** 沒有規則可以創建“Makefile”需要的目標“../supplement.gypi”。停止
解決:把src\chromium\src\third_party\webrtc目錄下的supplement.gypi文件拷貝到跟src同級目錄
六、構建WebRTCDemo生成 .so文件
cd webrtc/video_engine/test/android/
ndk-build
成功後會生成libwebrtc-video-demo-jni.so 。
webrtc在ubuntu14.04上的編譯過程(12.04亦可)