最近在做视频通话,基于webrtc,在获取代码的编译过程中遇到了许多坑,这里写出来希望你们不要走我相同的歪路,因为最开始编译的安卓代码,搞了好几天ios的代码还是比较顺利,就是把代码放到xcode编译花了不少时间,废话不多说,下面开始正题。
首先要给个官网地址,主要的还是参考官网地址 http://www.webrtc.org/native-code/ios
我的环境
mac 10.10
xcode 6.1
首先下载git http://code.google.com/p/git-osx-installer/ 进去还要点连接,写本文时sourceforge.net 休息了
记得官网的git推荐时2.2.1+ 我下载的就是2.2.1 懒得翻译直接拷贝官网
Confirm git is installed. git 2.2.1+ recommended.
Fetch depot_tools:
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Add depot_tools to your PATH:
$ export PATH=`pwd`/depot_tools:"$PATH"
下载源码(网上很多教程使用的是svn地址,google在2015年3月已经迁移到git上,请使用下面的git地址同步代码)
编译完成后会生成AppRTCDemo.app
64位
编译完成后会生成AppRTCDemo.app 这个是没法安装的mac上需要签名才能安装,反正这个我是没安装得起来,最后还是xcode代码编译出来打包安装的
今天就写到这里吧,一直xcode有时间再写,那确实是个坑,熬了几个通宵,主要是因为以前没接触过xcode,可能做过的人就不会像我一样了,这里给个网址链接,小日本文字:http://qiita.com/tonofo/items/76b5381f439bcc63aa0f
Xcode打开调试:
在src目录下会生成一个all.ninja.xcworkspace,打开此工程即可按照正常的Xcode方式运行demo。
遇到的错误:
1.
如果遇到:/bin/sh: ../../third_party/llvm-build/Release+Asserts/bin/clang: cannot execute binary file
这个是因为下载了错误的文件clang,因为我是在linux服务器上下载iOS代码,然后拷贝到Mac机上编译。
1,找到clang目录。执行 whereis clang
2,查看clang的目标架构。
执行 file clang_path(clang_path是第一步中找到的),在mac上的执行结果应当是
/usr/bin/clang: Mach-O 64-bit executable x86_64
3,查看third_party/llvm-build/Release+Asserts/bin/clang的目标架构,如果是如下的结果说明是Linux环境:
clang: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, stripped
解决办法 下面要在mac上操作
$cd webrtc/src/chromium
$rm src/third_party/llvm* //删除 llvm-build 和 llvm目录
$gclient sync //同步mac上对应的目录
2.还有个错误是python的错误和黑莓相关的,我开始是用的python2.7.6的 主要是版本太低 安装python2.7.9就可以了,记得要删除mac自带的python
首先要给个官网地址,主要的还是参考官网地址 http://www.webrtc.org/native-code/ios
我的环境
mac 10.10
xcode 6.1
首先下载git http://code.google.com/p/git-osx-installer/ 进去还要点连接,写本文时sourceforge.net 休息了
记得官网的git推荐时2.2.1+ 我下载的就是2.2.1 懒得翻译直接拷贝官网
Confirm git is installed. git 2.2.1+ recommended.
Fetch depot_tools:
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Add depot_tools to your PATH:
$ export PATH=`pwd`/depot_tools:"$PATH"
下载源码(网上很多教程使用的是svn地址,google在2015年3月已经迁移到git上,请使用下面的git地址同步代码)
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="python">$mkdir webrtc
$cd webrtc
$gclient config --name src 'https://chromium.googlesource.com/external/webrtc.git'
$echo "target_os = ['ios', 'mac']" >> .gclient //下载ios版本的 如果是安卓的使用 ['android', 'unix']
$gclient sync gclient sync 执行后开始同步代码 这一步需要几个小时 看你如何同步 如果不翻墙是行的 请使用vpn 我使用的服务器速度还是挺快的,不过因为我使用的linux服务器也埋下了一个错误,见文件最后 //如果没有vpn 使用Shadowsocks 也是可以的 请参考 https://github.com/wpc320/webrtc_doc 说的很详细 我就不拷贝了 编译代码:32bit: $export GYP_CROSSCOMPILE=1
$export GYP_DEFINES="OS=ios target_arch=arm arm_version=7"
$export GYP_GENERATOR_FLAGS="output_dir=out_ios32"
$export GYP_GENERATORS=ninja
$cd webrtc/src
$webrtc/build/gyp_webrtc
$ninja -C out_ios32/Release-iphoneos AppRTCDemo编译完成后会生成AppRTCDemo.app
64位
$export GYP_CROSSCOMPILE=1
$export GYP_DEFINES="OS=ios target_arch=arm64"
$export GYP_GENERATOR_FLAGS="output_dir=out_ios64"
$export GYP_GENERATORS=ninja
$cd webrtc/src
$webrtc/build/gyp_webrtc
$ninja -C out_ios64/Release-iphoneos AppRTCDemo编译完成后会生成AppRTCDemo.app 这个是没法安装的mac上需要签名才能安装,反正这个我是没安装得起来,最后还是xcode代码编译出来打包安装的
今天就写到这里吧,一直xcode有时间再写,那确实是个坑,熬了几个通宵,主要是因为以前没接触过xcode,可能做过的人就不会像我一样了,这里给个网址链接,小日本文字:http://qiita.com/tonofo/items/76b5381f439bcc63aa0f
Xcode打开调试:
$export GYP_GENERATOR_FLAGS="xcode_project_version=3.2 xcode_ninja_target_pattern=All_iOS $xcode_ninja_executable_target_pattern=AppRTCDemo|libjingle_peerconnection_unittest|libjingle_peerconnection_objc_test output_dir=out_ios"
$export GYP_GENERATORS="ninja,xcode-ninja"
$cd webrtc/src
$webrtc/build/gyp_webrtc在src目录下会生成一个all.ninja.xcworkspace,打开此工程即可按照正常的Xcode方式运行demo。
遇到的错误:
1.
如果遇到:/bin/sh: ../../third_party/llvm-build/Release+Asserts/bin/clang: cannot execute binary file
这个是因为下载了错误的文件clang,因为我是在linux服务器上下载iOS代码,然后拷贝到Mac机上编译。
1,找到clang目录。执行 whereis clang
2,查看clang的目标架构。
执行 file clang_path(clang_path是第一步中找到的),在mac上的执行结果应当是
/usr/bin/clang: Mach-O 64-bit executable x86_64
3,查看third_party/llvm-build/Release+Asserts/bin/clang的目标架构,如果是如下的结果说明是Linux环境:
clang: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, stripped
解决办法 下面要在mac上操作
$cd webrtc/src/chromium
$rm src/third_party/llvm* //删除 llvm-build 和 llvm目录
$gclient sync //同步mac上对应的目录
2.还有个错误是python的错误和黑莓相关的,我开始是用的python2.7.6的 主要是版本太低 安装python2.7.9就可以了,记得要删除mac自带的python
版权声明:本文为timond原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。