***************************************************************************************************************************
作者:EasyWave 時間:2013.03.23
類別:Linux 應用LinPhone 聲明:轉載,請保留連結
注意:如有錯誤,歡迎指正。這些是我學習的日誌文章......
***************************************************************************************************************************
在《 基於Linux開源VOIP系統LinPhone[三] 》中,簡單的介紹了SPEEX的編譯和所需的庫檔案,如果需要編譯linphone的話,最好先只需編譯不帶UI和不帶視頻傳輸的,這樣在後期調試的時候,會比較方便,如果想要自己修改linphone的代碼,需要熟悉ffmpeg(libav)、speex、readline、SDL、x264、osip、eXosip等等一大堆的第三方庫函數,如果不帶視頻的話,一般只需要speex、readline、osip、eXosip以及ncurses庫即可。至於G722和G729,需要熟悉mediastreamer2之後,才可以根據具體的項目,進行二次開發。如所示:
看到了嗎,不過,如果你的平台中本身就帶有網路攝影機的介面的話,圖中的libv4l其實用不上,我後來仔細分析了mediastreamer2之後,發現根本就沒有用上它,因為在mediastreamer2中有msv4l.c和msv4l2.c。
1):ncurses的編譯
最好在ncurses的目錄下建立一個build.sh檔案,這樣每次就執行./build.sh檔案即可。如下所示:
#!/bin/bashINSTALL_PATH=`pwd`/_installmkdir -p $INSTALL_PATH#autoreconf -ivmake distclean./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \ --target=arm-none-linux-gnueabi \--build=i486-linux-gnu \ --with-shared \ if [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
2):readline的編譯
build.sh的指令檔如下所示:
#!/bin/bashINSTALL_PATH=`pwd`/_installmkdir -p $INSTALL_PATH#autoreconf -ivmake distclean./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \--build=i486-linux-gnu \ --enable-multibyte \ --enable-shared \ --disable-static if [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
3):osip的編譯
osip的build.sh檔案如下所示:
#!/bin/bashINSTALL_PATH=`pwd`/_installmkdir -p $INSTALL_PATHmake distclean./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \--build=i486-linux-gnu \ --disable-option-checking \ --disable-dependency-tracking \ --enable-shared=yes \ --enable-static=no \ --enable-fast-install=no \ --disable-libtool-lock \ --disable-debug \ --enable-trace \ --disable-mpatrol \ --disable-gprof \ --enable-mt \ --enable-pthread \ --enable-semaphore \ --enable-sysv \ --disable-gperf \ --disable-hashtable \ --enable-test \ --disable-minisize \ --with-gnu-ld if [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
4):libeXosip的編譯
#!/bin/bashINSTALL_PATH=`pwd`/_installmkdir -p $INSTALL_PATHmake distclean./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \ --build=i486-linux-gnu \ --disable-option-checking \ --disable-dependency-tracking \ --enable-shared=yes \ --enable-static=no \ --enable-fast-install=no \ --disable-libtool-lock \ --disable-tool \ --disable-debug \ --enable-trace \ --disable-mpatrol \ --disable-gprof \ --enable-mt \ --enable-pthread \ --enable-semaphore \ --enable-sysv \ --disable-openssl \ --enable-srvrec \ --disable-minisize \ --with-gnu-ld \ OSIP_LIBS="-lpthread -losip2 -losipparser2 -L$INSTALL_PATH/lib" \ OSIP_CFLAGS="-I$INSTALL_PATH/include"if [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
最後,就是編譯linphone的代碼了。這個自己去運行./configure -h來進行設定和編譯了。最後,還需要根據具體的晶片去修改oss和alsa的代碼,否則會出現無法播放的問題。