Webrtcのnative api二次開発の環境構築

1208 ワード

c++コードのコンパイルが完了したら
ninja -C out/linux

libwebrtcを得る.a,この静的ライブラリはwebrtcのすべてのoファイルを含む.
直接-lwebrtc,-I${webrtc}/srcディレクトリはnative apiで開発できる.
Webrtcコンパイルではclangによるコンパイルが行われるため,二次開発環境がgccである場合,いくつかのライブラリの互換性がない場合がある.
例:
undefined reference:string, allocator >::~basic_string()
解決方法:
Webrtcのclang環境を二次開発の工程に導入し、手順は以下の通りである.
(1)${webrtc}/src/out/linux/obj/buildtools/third_partyで、見つかりました.oファイル、別々に梱包する.
ar -crv libc++.a *.o
ar -crv libc++abi.a *.o

(2)二次開発の工程において、この二つのaファイル、-lc++、-lc++abiを導入する.
(3)g++とgccをclang++とclangに置き換え、実行可能ファイルを${webrtc}src/third_party/llvm-build/Release+Asserts/binの下
(4)ヘッダファイルを含む場所:
${webrtc}/src/buildtools/third_party/libc++/trunk/include
${webrtc}/src/third_party/llvm-build/Release+Asserts/lib/clang/6.0.0/include

(5)clangとgccの標準ライブラリの衝突を防止するために、コンパイル時にオプションを指定し、-nostdinc++は、標準システムヘッダファイルディレクトリを検索しないことを示す
(6)事前定義WEB_POSIXとWEBRTC_LINUX
(7)webrtcはrttiメカニズムをオフにしてアプリケーションサイズを小さくするので、webrtcのクラスを継承する際には、g++に-fno-rttiオプションを追加する必要がある.
まとめて、webrtcあるいはchromiumの二次開発を用いて、導入する必要があるだけではない.aの静的ライブラリファイルは、clangの依存ライブラリ、bin、ヘッダファイルを含む対応するc++コンパイル環境を導入する必要がある.