Linux基於webRTC的二次開發(一)


最近在做Linux平台下webRTC的二次開發,一路摸索,中間踩了不少坑,這一篇博客先來簡單介紹下Linux上如何使用GCC編譯webRTC。

為什么使用GCC編譯?

這其實是無奈之舉,Linux下webRTC中的ninja工程使用的是Clang進行編譯,且依賴其內置的stdc標准庫。然而我現有的開發環境所使用的編譯器為GCC,在使用Clang進行webRTC二次開發時遇到各種編譯錯誤,只好改用GCC重新編譯webRTC。

1.獲取webRTC源碼

需要准備一個梯子,同時使用工具進行終端穿牆。
獲取源碼流程可以查看官方文檔https://webrtc.org/native-code/development/
首先安裝Chromium depot tools;

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

將depot tools路徑添加道環境變量中

export PATH=$PATH:/path/to/depot_tools

然后獲取webRTC源碼

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

webrtc源碼下載下來很大,確保翻牆工具有足夠的流量

2.修改BUILD.gn

如果不修改GN files會出現一堆錯誤,編譯無法通過
關閉-Werror編譯選項
build/config/complier/BUILD.gn
修改treat_warnings_as_errors=false
使用系統stdc標准庫
build/config/c++/BUILD.gn
注釋掉

cflags_cc += [
    "-nostdinc++"
]
cflags += ["-fno-builtin-abs"]
ldflags += ["-nodefaultlibs"]
libs += [
    "c",
    "gcc_s",
    "m",
    "rt",
]

使用gcc編譯命令為

gn gen webrtc-checkout/src/out/Default --args="is_clang=false"
ninja -C webrtc-checkout/src/out/Default

編譯過程中可能會遇到因為源碼問題導致編譯出錯,修改即可
編譯成功后,即可使用gcc二次編譯開發
注意編譯時需添加一些編譯選項
使用cmake構建工程時添加

set(CMAKE_CXX_FLAGS "-fno-rtti")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWEBRTC_LINUX=1 -DWEBRTC_POSIX=1")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM