WebRTC在MAC下的编译及集成QT中遇到的问题

编译WebRTC首先得下载源代码。

1.先安装git ,mac下安装XCODE自带git

2.下载编译工具 depot_tools,  

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

3.设置环境变量

export PATH=$PATH:`pwd`/depot_tools  

4.下载源码

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc_ios
gclient sync

下载完成后就开始编译工作

1.编译静态库

gn gen out/mac --args='is_debug=false target_os="mac" target_cpu="x64"' --ide=xcode
ninja -C out/mac AppRTCMobile

2.合并静态库 ,将编译完的静态库合并为一个.a
mkdir  ./lib
find ./ -name *.a exec cp {} ./lib \;
libtool -static -o libwebrtc-fina.a *.a

编译完之后就可以集成开发了,这里讲的是QT Creator。

首先把头文件和合并好的.a拿过来 并添加到工程

INCLUDEPATH += $$PWD/third_party/webrtc/include

LIBS += -L"$$PWD/third_party/webrtc/lib" \
            -lwebrtc-fina

接下来就可以根据自己的需求开始开发了,这时问题就来了  会有很多
Undefined symbols for architecture x86_64:  
 "typeinfo for XXX", referenced from:

错误在link的时候,第一眼看上去以为是没有引用的静态库,经过查看.a的符号

nm -a libwebrtc-fina.a

提示err的类 静态库中确实包含了。

最后查了很多资料发现 webrtc默认是关闭了rtti导致的,如果想link不报错,qt工程也需要关闭rtti

QMAKE_CFLAGS = -fno-rtti -pipe
QMAKE_CXXFLAGS = QMAKE_CFLAGS 
设置完这两个参数之后 编译 std库又会报错 这时要统一std库

QMAKE_CXXFLAGS += -std=c++11 -stdlib=libc++
CONFIG += c++11


这时候在rebuild工程 ,编译  link 一把过。

网上webrtc在mac系统和qt集成的资料很少 ,希望能帮到遇到同样问题的同学。




你可能感兴趣的:(webrtc)