WebRTC源码学习02---webrtc源码编译安装(Mac)

参考文献

https://webrtc.org.cn/mirror/ (主要参考文章)

https://www.an.rustfisher.com/webrtc/intro/sync-build/(参考一下代理设置)

https://blog.csdn.net/dangwei_90/article/details/110224909(xcode内建库版本修改)

安装过程遇到的问题

(一)同步WebRTC,vi .gclient对.gclient添加以下内容

solutions = [
  { "name"        : "src",
    "url"         : "https://webrtc.bj2.agoralab.co/webrtc-mirror/src.git@65e8d9facab05de13634d777702b2c93288f8849",
    "deps_file"   : "DEPS",
    "managed"     : False,
    "safesync_url": "",
    "custom_deps": {
    },
  },
]
target_os = ["mac"] 

其中target_os根据自己的系统选择"linux","Android","ios","mac"

(二)src/third_party目录不存在

创建就行,注意所属目录和你执行gclient sync的用户一致

mkdir -p src/third_party

(三)环境问题(去tmd环境,耽误我好久):It thinks sys.prefix is u'/Library/Frameworks/Python.framework/Versions/2.7' (should be ...)

________ running 'vpython src/build/landmines.py --landmine-scripts src/tools_webrtc/get_landmines.py --src-dir src' in '/Users/liudie/ws/webrtc-proj/webrtc'
[E2022-09-27T10:20:26.947067+08:00 97959 0 venv.go:969] Command (cwd=/var/folders/nr/f3mrb__s5hx22gqg6cdknkx80000gn/T/vpython_bootstrap629862980/packages/virtualenv-15.1.0): [/usr/local/bin/python2.7 -B -E -s virtualenv.py --no-download /Users/liudie/.vpython-root/a3399d]
Process output:
New python executable in /Users/liudie/.vpython-root/a3399d/bin/python
ERROR: The executable /Users/liudie/.vpython-root/a3399d/bin/python is not functioning
ERROR: It thinks sys.prefix is u'/Library/Frameworks/Python.framework/Versions/2.7' (should be u'/Users/liudie/.vpython-root/a3399d')
ERROR: virtualenv is not compatible with this system or executable

陆陆续续困扰了我好久,看了这篇文章https://blog.csdn.net/weixin_40007016/article/details/118806597。是python多版本环境导致的,所以压根不用管如何处理现有的多版本环境,直接祭出环境管理神器anaconda即可!

1.下载anaconda

https://www.anaconda.com/download/#macos

记得将conda的bin目录加入path中:

export PATH=/Users/liudie/opt/anaconda3/bin:$PATH

2.更新conda

conda update anaconda

3.创建我们需要的python2.7环境即可

conda create -n python27 python=2.7
conda activate python27  #进入环境
conda deactivate  #退出环境

4.进入我们的python27环境,正常执行下载、编译、安装即可

date; gclient sync; date

(四)编译问题

gn gen out/Release "--args=is_debug=false"

1.xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

一般是xcode还没有安装导致,即便我们发现存在xcode-select命令,但是实际上是无法使用的,我们需要去重新下载xcode

(1)去官网下载xcode:https://developer.apple.com/download/all/?q=xcode

可能会需要AppID,创建一下即可 https://www.bkqs.com.cn/content/zn269wypy.html

下载需要注意:需要和自己的系统版本号对应(幸亏使用的公司流量,不然哭死.....,下错两次,用了30G)

参考:https://www.codenong.com/js284cde739af1/ 查看版本对应

(2)下载后进行解压,安装即可,注意:需要从下载目录中移动到应用程序目录

(3)需要设置Xcode应用的Locations:Command Line Tools

2.Exception: No 10.12+ SDK found(参考:webRTC之macOS编译过程及问题解决

(1)先查看自己的SDK版本

xcrun --show-sdk-version

 

(2)修改.gn文件 

vi .gn

(3)还需要修改python脚本/Users/liudie/ws/webrtc-proj/webrtc/src/build/mac/find_sdk.py,否则还是无法找到,因为脚本默认还去去找10.xx

3.使用gn来生成编译脚本(类似cmake,存放了文件编译的先后顺序):gn gen out/Release "--args=is_debug=false"

 

4.执行ninja -C out/Release,进行编译构建(类似make,执行gn产生的脚本,按照顺序进行执行,生成临时文件、二进制文件,最后进行编译链接,调用了预编译器、编译器、链接器完成编译)

可能出现下面错误:NSURLSession.h:500:168: error: expected ')'

这是最坑的地方,去谷歌搜索,也不能找到有用的信息,一般是让重新安装xcode,或者xcode-select选择版本,于是苦逼的下载多个xcode(几十个G啊,我去),也没有成功

发现调用的SDK全是macOS12.3库下的代码导致,于是去我们下载自己需要的版本,添加到SDKs目录即可

编译webrtc通过了....

 

(五)修改xcode的内建库macOS12.3变为自己需要的库

我们在前面看到,gn文件里面默认编译版本最小是10.12,所以我们最好下载高于10.12一丢丢的版本就行

下载地点在:https://github.com/YoungSunwh/MacOSX-SDKs

这里我选择MacOSX10.15,下载后进入xcode的SDK目录

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

将自己的下载的库移动进去,即可

重新执行gn和ninja命令即可!!!

(六)生成ide所需要的工程文件(可忽略)

gn gen --ide=vs out/Release    #windows

gn gen out/xcode_mac_x64 --args='target_os="mac" target_cpu="x64"' --ide=xcode      #mac

  

查看out/Release下面是否存在all.sln文件或者out/xcode_mac_x64下的all.xcworkspace,存在则安装成功!

完成收工 ,后面可以通过Visual Studio(mac下还是使用xcode)对webrtc源码进行编辑和编译!

(七)xcode打开项目

选择out/xcode_mac_x64下的all.xcworkspace即可

 

posted @ 2022-10-24 20:16  山上有风景  阅读(1037)  评论(0编辑  收藏  举报