• WebRTC源码学习02webrtc源码编译安装(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即可

  • 相关阅读:
    JavaScript的MVC模式
    【收藏】关于团队合作的css命名规范
    【推荐】前端资源推荐
    JavaScript完美验证URL正则
    【原创】JavaScript中的cookie学习
    jquery实现无限滚动瀑布流实现原理
    常用浏览器本地存储的几种方案对比
    事件触发的一个细节设计
    IE6中fixed抖动问题的解决(完美无副作用版)
    Web开发者不容错过的20段CSS代码
  • 原文地址:https://www.cnblogs.com/ssyfj/p/16710161.html
Copyright © 2020-2023  润新知