webrtc在ubuntu14.04上的编译过程(千辛万苦啊)

来源:互联网 发布:虚拟机 mac 硬盘空间 编辑:程序博客网 时间:2024/04/30 18:05

文章来源:http://www.verydemo.com/demo_c289_i34103.html


一、虚拟机环境搭建

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或者翻墙)

         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是需要服务器的,可以局域网,或者广域网  


四、ubuntu翻墙

         参照:

         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 。


0 0