移植linphone到arm-linux日誌記錄
離上次寫部落格已經一年多,參加工作已經一年多了,做過很多事情,再做一次的時候老是想不起一些細節的東西,故,記錄的部落格上,順便與大家分享。
根據專案需求,移植一個只有語音功能的linphone(無需介面與視訊)
使用arm-linux-gcc4.5.1,這個編譯器是友善之臂提供的,linux版本3.0.8
linphone移植需要依賴其他庫:
readline-6.2.tar.gz(如未加此庫,會出現linphonecsh無法註冊到伺服器的問題)
設定好交叉編譯器環境變數
建立目錄 /home/linphone/build,/home/linphone/arm_target,/home/linphone/sources
將所有安裝包放入/home/linphone/sources,並解壓到該資料夾下
tar -zxvf libogg-1.3.0.tar.gz
tar -zxvf readline-6.2.tar.gz
tar -zxvf speex-1.2rc1.tar.gz
tar -zxvf libosip2-3.3.0.tar.gz
tar -zxvf libeXosip2-3.3.0.tar.gz
tar -zxvf linphone-3.2.0.tar.gz
交叉編譯libogg
mkdir /home/linphone/build/libogg
cd /home/linphone/build/libogg
../../sources/libogg-1.3.0/configure --prefix=/home/linphone/arm_target CC=arm-linux-gcc --host=arm-linux--enable-static --disable-shared
make
make install(一般情況下沒有錯誤發生)
交叉編譯speex
mkdir /home/linphone/build/speex
cd /home/linphone/build/speex
../../sources/speex-1.2rc1/configure --prefix=/home/linphone/arm_target CC=arm-linux-gcc--host=arm-linux --with-ogg=/home/linphone/arm_target/ --enable-static --disable-shared
make
make install (一般情況下沒有錯誤發生)
交叉編譯libosip2
mkdir /home/linphone/build/libosip2
cd /home/linphone/build/libosip2
../../sources/libosip2-3.3.0/configure --prefix=/home/linphone/arm_target CC=arm-linux-gcc--host=arm-linux --enable-shared --disable-static
make (一般情況下沒有錯誤發生)
make install
交叉編譯libeXosip2
mkdir /home/linphone/build/libeXosip2
cd /home/linphone/build/libeXosip2
../../sources/libeXosip2-3.3.0/configure --prefix=/home/linphone/arm_target CC=arm-linux-gcc --host=arm-linux --enable-shared --disable-static PKG_CONFIG_PATH=/home/linphone/arm_target/lib/pkgconfig/
make
make install (libeXosip2版本需要與libosip2的版本一直,否則編譯不通過)
交叉編譯readline (一般情況下沒有錯誤發生)
mkdir /home/linphone/build/readline
cd /home/linphone/build/readline
../../sources/readline-6.2/configure --prefix=/home/linphone/arm_target --prefix=/home/install/linphone --host=arm-linux --with-gnu-ld --disable-static
make
make install
交叉編譯linphone
mkdir /home/linphone/build/linphone
cd /home/linphone/build/linphone
../../sources/linphone-3.2.0/configure --prefix=/home/linphone/arm_target --host=arm-linux --with-gnu-ld --disable-static --enable-alsa=yes --disable-glib --with-osip=/home/linphone/arm_target --with-speex=/home/linphone/arm_target SPEEX_CFLAGS="-I/home/linphone/arm_target/include" SPEEX_LIBS="-L/home/linphone/arm_target/lib -lspeex -lspeexdsp" OSIP_CFLAGS="-I/home/linphone/arm_target/include" OSIP_LIBS="-L/home/linphone/arm_target/lib -leXosip2 -losipparser2" --disable-video --disable-gtk_ui PKG_CONFIG_PATH=/home/linphone/arm_target/lib/pkgconfig/ READLINE_CFLAGS="-I/home/linphone/arm_target/include" READLINE_LIBS="-L/home/linphone/arm_target/lib"
make
make install
注意:之前使用libeXosip2-4.0.0,編譯linphone會報一堆錯誤,果斷該用3.3.0版本,問題就沒出現了,編譯到後面出現config.h中的巨集定義重複定義,只需在該檔案中把相應的巨集定義註釋就解決了。
將/home/linphone/arm_target下的linphonec linphonecsh拷貝到開發板檔案系統的/usr/local/bin,並執行
缺少庫則從/home/linphone/arm_target/lib拷貝,以此類推
在開發板測試
linphonecsh init
linphonecsh register --host IP --username user --password passwd
linphonecsh generic 'autoanswer enable'
linphonecsh generic 'soundcard use 1'
至此,此版本的linphone已可接聽與撥打。
——————————————————————————————————————————————
經過測試,執行linphone導致arm linux 無法重啟,可試下一下步驟
cd /
kill -9 linphonec的pid
reboot