1. 程式人生 > >linphone在ARM-Linux下的交叉編譯

linphone在ARM-Linux下的交叉編譯

系統:Linuxmint9/fedora13
arm-linux:arm-none-linux-gnueabi 4.3.2 (Sourcery G++ Lite 2008q3-72)

Linphone版本:linphone-3.3.0.tar.gz


Linphone依賴庫準備:
libogg-1.2.0.tar.gz

speex-1.2rc1.tar.gz

libosip2-3.3.0.tar.gz

libeXosip2-3.3.0.tar.gz


在fedora上直接編譯通過,但是在linuxmint上需要安裝intltool,命令:
sudo apt-get install intltool

1) 交叉編譯 libosip2-3.3.0
#cd libosip2-3.3.0 //到解壓後的 libosip 目錄下,以下同
#./configure --prefix=/home/jinshely/projects/linphone/armbuild --host=arm-linux --target=arm-linux --disable-static //配置檔案
#make //編譯
#make install //安裝

// --prefix=/... :指定檔案編譯安裝目錄
//--host=..... :指定編譯工具,預設的為gcc,此處為arm-linux(編譯到arm上用的)
//--disable-static :禁止靜態庫(.a)連結,編譯生成動態庫(.so)

2) 交叉編譯 libeXosip2-3.3.0
#cd libeXosip2-3.3.0
#./configure --prefix=/home/jinshely/projects/linphone/armbuild/ --host=arm-linux --disable-static --with-osip=/home/jinshely/projects/linphone/armbuild/ PKG_CONFIG_PATH=/home/jinshely/projects/linphone/armbuild/lib/pkgconfig
//配置檔案
#make //編譯
#make install //安裝

3) 交叉編譯 libogg-1.2.0
#cd ../libogg-1.2.0
#./configure --prefix=/home/jinshely/projects/linphone/armbuild --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point
#make
#make install

4) 交叉編譯speex-1.2rc1
#cd ../speex-1.2rc.1
#./configure --prefix=/home/jinshely/projects/linphone/armbuild --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point --enable-arm-asm --with-ogg=/home/jinshely/projects/linphone/armbuild --with-ogg-libraries=/home/jinshely/projects/linphone/armbuild/lib --with-ogg-headers=/home/jinshely/projects/linphone/armbuild/include/ogg

#make
#make install
//--with-ogg : 指定ogg生成的庫的目錄
// --with-ogg-libraries : ogg庫,若沒有,把生成的檔案copy目錄下面
//--with-ogg-headers :指定ogg標頭檔案

5) 在沒有圖形介面(GUI)支援情況下交叉編譯 linphone-3.3.0:
#cd /root/arm/linphone-3.3.0
#./configure --prefix=/home/jinshely/projects/linphone/armbuild --host=arm-linux --target=arm-linux --disable-static --disable-glib --enable-gnome_ui=no --enable-gtk_ui=no --disable-video --disable-manual --enable-ipv6 --enable-alsa --with-osip=/home/jinshely/projects/linphone/armbuild/ --with-speex=/home/jinshely/projects/linphone/armbuild/ PKG_CONFIG_PATH=/home/jinshely/projects/linphone/armbuild/lib/pkgconfig/
#make
#make install

注: --enable-gtk_ui=no 目的是去除gtk的ui,否則編譯過程中會需要gtk+庫。
--disable-video 目的是裁剪掉視訊功能,否則編譯過程會需要ffmeg庫。
--with-osip 目的是指明編譯過程所需要的osip庫的位置。

--enable-alsa :使能alsa語音編解碼方式,語音傳輸的另種方式為oss
--enable-ipv6 :使能ipv6

以上的--disable-static 語句使編譯不能生成靜態庫檔案,即不能使庫和可執行檔案和為一體,而生成了另外單獨的庫支援檔案。如果需要把庫和可執行檔案合成一個檔案,那麼不要使用這項。

就此編譯完畢,在/armbuild/bin 檔案中就可以找到可執行檔案linphonec,把檔案及相應的庫下載到開發板中,如不能執行,則缺少庫支援,把剛生成的相應的 *.so.*檔案複製到開發板的lib目錄下即可。

題外話:
說實話,這個東西還真是麻煩!搞了N久,試過很多前輩大俠的方法才搞定,後面要繼續還會有一堆的問題。不過開源的東西就是這個樣子,和個人使用的系統環境都有關係,別人的方法可以參考,但是照搬的話,出現問題的可能性很大,還是要自己多嘗試,找方向。總之,搞定了編譯,還是很開心的