由于本人近期在研究webrtc native的使用,然后就会用到webrtc的源码进行编译,所以今天在此记录一下从下载源码到编译后的过程,期间走过许多弯路,记录下来,以便和大家分享。
主要分为两个过程 首先是从官网上下载源码,其次是利用ninja进行编译。大致就分为这两个步骤,期间的细节如下文所述。
本文参考的博客地址如下:
https://blog.csdn.net/foruok/article/details/54944427
https://blog.csdn.net/yangzhenping/article/details/52399897
下面这个网址是Linux下depot_tools的地址。
参考网址:git clone https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools
还有。。。最关键的一个步骤就是,能够有一个科学的上网环境,因为国内是下载不了webrtc的源码滴,所以说我们需要搞一些事情,然后 让自己能够进行科学的上网。在此,分享一个自己的方法,搞了一个阿里云服务器,配置不高,只求能下载编译足矣。然后你就会发现,下载工具以及源码都是666了。
cd /home
mkdir webrtc
git clone https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools
export PATH=$PATH:`pwd`/depot_tools
下载完成后,大概100M左右吧。在webrtc目录下会生成一个depot_tools的文件夹,文件夹中存放的是之后下载依赖以及编译过程中需要的命令脚本。
mkdir webrtc_checkout
cd webrtc_checkout
fetch --nohooks webrtc
Okkkk!至此 如果能保证科学的上网方式以及保证基本的软件安装了 比如git 这样就正在下载webrtc的源码了。我用阿里云服务器大概等了大概30分钟的样子,下载最新版本的webrtc源码。然后就停止了,我用 du -sh *看了一下 文件夹的大小 才8个G,想了想,好像不咋对嘞,感觉最少10个G,然后gclient sync了一下,过了大概20分钟的样子,下载完成,complete。
之后就是安装依赖的过程了。
cd src
cd build
./install_build_deps.sh
下载依赖的过程。时间稍微久一些,就在此时 我遇到了如下问题。
libcups2-dev : Depends: libgnutls-dev but it is not going to be installed
libcurl4-gnutls-dev : Depends: libgnutls-dev but it is not going to be installed
Depends: librtmp-dev but it is not going to be installed
大致内容就是这样子滴 后来google发现,得出结论是依赖的版本错误。
# 先安装软件看错误提示
sudo apt-get install libcurl4-openssl-dev
# 根据提示,一直往下安装依赖软件,直到出现以下格式错误
libgnutls-dev : Depends: libgnutls26 (= 2.12.23-12ubuntu2.8) but 2.12.23-12ubuntu2.9 is to be installed Depends: libgnutlsxx27 (= 2.12.23-12ubuntu2.8) but it is not going to be installed Depends: libgnutls-openssl27 (= 2.12.23-12ubuntu2.8) but 2.12.23-12ubuntu2.9 is to be installed
#这里提示libgnutls26等三个软件包,出现了版本依赖错误。 消除软件包(依次对所有软件包执行以下命令)
dpkg --purge --force-all libgnutls26
# 修复系统依赖
apt-get -f install
# 如果没有提示错误,由可以依次返回去,一个一个的安装。 最后执行:
sudo apt-get install libcurl4-openssl-dev
# 安装成功,问题解决。
下一步就进行生成ninja项目
生成debug版本的项目
gn gen out/Default
生成release版本的项目
gn gen out/Default --args='is_debug=false'
执行后 会在src/out目录下生成一个Default目录,里边就是相关的项目文件。
最后一步 就是执行项目的编译过程了,执行脚本
ninja -C out/Default
漫长的等待过程。。。。
然而 中间报了错
显示的是swap虚拟内存分配不足导致的 google之后 我的解决方案如下
参考 https://blog.csdn.net/afteryou/article/details/78914391
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
//开机自动挂载swap:
//使用 vi 或 nano 在 /etc/fstab 文件底部添加如下内容:
/swapfile none swap sw 0 0
问题解决。然后
gn clean /out/Default
后 继续 ninja -C /out/Default
再等待。。。。。。。
还有600左右的文件。。。稍后看看如何。。。。