centos 下編譯licode

原生licode只支持ubuntu,而自己經常使用centos因此想要在cent下編譯licode。寫篇博客記錄下遇到的問題。
期間也查看了搜索了各種帖子以及博客發現,大家在centos下編譯碰到的問題都不全一樣,想來也可以理解,licode版本,操作系統版本不一樣的話都可能導致不同的問題,下面是我的操作系統版本以及我遇到的問題(問題主要是erizo模塊) 。

LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.8.2003 (Core)
Release:	7.8.2003
Codename:	Core

我編譯的時候 主要參考這位大佬的博客:licode學習之編譯篇–1

有重合的問題的話,我就沒有記錄,可以參考大佬的博客,我記錄下不一樣的問題。

還有編譯圖中學習到了一個方法,因爲很多源碼編譯下載源碼的時候都是再github上下載的,而訪問海外節點是真的慢,因此可以通過碼雲等其他國內的git網站將依賴的源碼先導入到國內,然後在下載,真的是速度飛快,非常提高效率。

首先我按照大佬說的將installUbuntuDeps.sh中的apt-get都修改爲yum,因爲跑的過程中屏幕刷新的比較快,也沒有細看各種信息,導致後面編譯的時候各種報錯都是執行這個腳本的時候一些庫沒有安裝上,因此我建議如果要在centos下編譯licode,可以把多看下installUbuntuDeps.sh的內容,把裏面需要安裝的東西都安裝到位了,再執行後面的腳本。(我自己跑installUbuntuDeps.sh的時候因爲前期沒有記錄可能有遺漏,這一步還是非常重要的)。

執行installUbuntuDeps.sh腳本的主要方向就是:把yum install 能安裝的直接安裝,不能安裝的就源碼安裝,因爲爲了產生其他問題,我這次編譯的時候是嚴格按照原生腳本中的版本去安裝各種依賴庫的,以後有機會再進行升級。

1.sudo yum install -qq python-software-properties -y
執行installUbuntuDeps.sh的時候會碰到找不到這個,我查文檔貌似是說python-software-properties的功能已經合併到software-properties-common了,因此只需要將報錯的那行命令註釋掉就可以了,因爲下面一條命令就是sudo yum install -qq software-properties-common -y

2.原生licode是再ubuntu上升級的,gcc的版本是大於5的,我看大佬是通過修改腳本中的最低限制來編譯的,我自己當時還沒看大佬的博客不確定gcc4可以編譯成功嗎,因此我選擇了將我的centos上的gcc升級到了gcc5。

3.installErizo.sh中的install_erizo方法剛開始是使用conan來安裝boost和IncludePathsGenerator的,執行conan install . --build IncludePathsGenerator一直提示我的GCC版本的版本是4.8,我當時也很奇怪,我明明已經升級過gcc了,但是爲什麼還提示我的gcc版本不對,最後解決辦法是可以修改/root/.conan/profiles/defaultcompiler.version=4.8修改爲compiler.version=5就可以了,licode/erizo/conanfile.txt是執行conan install 時候需要依賴的文件,可以看到boost需要的版本是1.69.0(boost是真的重,找機會可以用std替換下)。conan這塊基本上就沒有什麼問題了

4.問題最多的是執行./generateProject.shbuildProject.sh這兩個腳本:

缺少libsrtp的報錯的那個宏是什麼我給忘了沒有記錄,不過都可以上網查到,而且之前如果對照installUbuntuDeps.sh安裝好了libsrtp的話也不會又這個報錯,結合installUbuntuDeps.sh和上網查,調整下編譯參數之類的裝上就行,

#installLibsrtp.sh
#!/usr/bin/env bash

SCRIPT=`pwd`/$0
FILENAME=`basename $SCRIPT`
PATHNAME=`dirname $SCRIPT`
ROOT=$PATHNAME/..
BUILD_DIR=$ROOT/build
LIB_DIR=$BUILD_DIR/libdeps
PREFIX_DIR=$LIB_DIR/build/

install_libsrtp(){
  if [ -d $LIB_DIR ]; then
    cd $LIB_DIR
    cd libsrtp
    CFLAGS="-fPIC" ./configure --enable-openssl --prefix=$PREFIX_DIR --with-openssl-dir=$PREFIX_DIR
    make $FAST_MAKE -s V=0 && make uninstall && make && make install
    cd $CURRENT_DIR
  else
    mkdir -p $LIB_DIR
    install_libsrtp
  fi
}

install_libsrtp

錯誤:lib not found: AVUTIL-NOTFOUND check README
安裝libav—>安裝libav(11.9)之前先安裝yasm 、opus 、 libvpx (vp89的編解碼器都要安裝,並且要安裝在licode目錄下,要不Libav裝不成功

installLibav.sh
#!/usr/bin/env bash

SCRIPT=`pwd`/$0
FILENAME=`basename $SCRIPT`
PATHNAME=`dirname $SCRIPT`
ROOT=$PATHNAME/..
BUILD_DIR=$ROOT/build
LIB_DIR=$BUILD_DIR/libdeps
PREFIX_DIR=$LIB_DIR/build/

install_opus(){
  [ -d $LIB_DIR ] || mkdir -p $LIB_DIR
  cd $LIB_DIR
  cd opus
  ./autogen.sh
  ./configure --prefix=$PREFIX_DIR
  make $FAST_MAKE -s V=0
  make install
  cd $CURRENT_DIR
}

install_libvpx(){
  if [ -d $LIB_DIR ]; then
    cd $LIB_DIR
    cd libvpx
    CFLAGS=-fPIC ./configure --prefix=$PREFIX_DIR --enable-vp8-encoder --enable-vp8-decoder --enable-vp9-encoder --enable-vp9-decoder --enable-libyuv --enable-shared
    make
    make install
  else
    mkdir -p $LIB_DIR
    install_libvpx
  fi
}


install_libav(){
  if [ -d $LIB_DIR ]; then
    cd $LIB_DIR
    cd libav
    PKG_CONFIG_PATH=${PREFIX_DIR}/lib/pkgconfig CFLAGS="-Wno-error" ./configure  --prefix=$PREFIX_DIR --enable-shared --enable-libvpx --enable-libopus --disable-doc
    make $FAST_MAKE -s V=0
    make install
  else
   echo "error"
  fi
}

install_opus
install_libvpx
install_libav

錯誤:lib not found: LOG-NOTFOUND check README
解決辦法:Centos下安裝Log4cxx

錯誤:liav-Werror=attributes(前面一長串的我給忘了,大概就是alloc_size的錯誤),根本原因是編譯libav時候的這個alloc_size有警告 應該從這裏把警告幹掉,但是我沒找到怎麼弄,我的解決辦法是將/data/licode/erizo/src/third_party/webrtc.cmake下的Werror刪掉不過這樣不安全.

還有就是安裝openssl libnice之類的大佬的博客都有我就沒寫了。

然後就是編譯速率提高,因爲我之前自己使用的時候就發現每次修改完C++部分的代碼執行installErizo,sh的時候速度太慢了,雖然配有 -e等參數分開編譯,但是還是想再快一點,可以看到generateProject.sh這個腳本里生成編譯選項的時候 有debug和release 可以把這個腳本修改下,用傳參的方法只生成release。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章