交叉編譯linphone [osip2 ,ogg, speex, ortp(VOIP開源軟體)(轉)] 2008-10-22 16:40
| LINPHONE ON ARM-LINUX (cross-compiling on host for target architecture) 編譯linphone 需要庫的支援,這其中就需要osip2,ogg,speex,ortp庫的支援,這幾種庫分別支援各種通訊協議,如osip2支援的為sip協議,ortp支援的為rtp協議(即rtp協議的軟體版)。 其中speex庫另需要ogg庫的支援,在編譯過程中可以看到。 廢話少說,下面開始交叉編譯: 軟體包: (在網上下載如下軟體包) 1) linphone-1.2.0 2) libosip2-2.2.2 3) libogg-1.1.0 4) speex-1.1.11.1 5) oRTP ( linphone 包中內建,如果沒有可以下載ortp-0.7.0版本) 到網站下載 http://www.gnu.org/software/ 其他工具見:http://telestarnotes.blogspot.com/2004_12_01_archive.html
A) 編譯環境設定: arm交叉編譯工具:: 下載 arm-linux-gcc-3.4.1.tar.bz2 直接解壓到usr/local 中,或連結到/usr/local中 1)把arm-linux-gcc-3.4.1.tar.bz2 檔案copy到usr/local 下,右擊解壓即可
2)任意目錄下解壓arm-linux-gcc-3.4.1.tar.bz2 #tar -xvjf arm-linux-gcc-3.4.1.tar.bz2 //解壓 #export PATH=$PATH:/root/usr/local/arm/3.4.1/bin //環境變數設定:路徑,連結,庫 #export LD=/root/usr/local/arm/3.4.1/bin/arm-linux-ld #export LDFLAGS=-L/root/usr/local/arm/3.4.1/arm-linux/lib
B) 交叉編譯 libosip2-2.2.2 #cd libosip2-2.2.2 //到解壓後的 libosip 目錄下,以下同 #./configure --prefix=/root/armbuild -host=arm-linux --target=arm-linux --disable-static //設定檔 #make //編譯 #make install //安裝
// --prefix=/... :指定檔案編譯安裝目錄 //--host=..... :指定編譯工具,預設的為gcc,此處為arm-linux(編譯到arm上用的) //--disable-static :禁止靜態庫(.a)連結,編譯產生動態庫(.so)
C) 交叉編譯 libogg-1.1.0 #cd ../libogg-1.1.0 #./configure --prefix=/root/armbuild --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point #make #make install
D) 交叉編譯speex-1.1.11.1 #cd ../speex-1.1.11.1 #./configure --prefix=/root/armbuild --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point --enable-arm-asm --with-ogg=/root/armbuild --with-ogg-libraries=/roo/armbuild/lib --with-ogg-headers=/root/armbuild/include/ogg //要把/root/armbuild/lib 下的產生的ogg相應的庫copy到交叉編譯工具/usr/local/arm-linux/lib 下面,speex的編譯需要ogg庫的支援。 #make #make install //--with-ogg : 指定ogg產生的庫的目錄 // --with-ogg-libraries : ogg庫,若沒有,把產生的檔案copy目錄下面 //--with-ogg-headers :指定ogg標頭檔
E) 將libspeex編譯成功的庫檔案copy到編譯工具下的庫中 #cp /root/armbuild/usr/lib/libspeex.so.2.0.0 /root/usr/local/arm/3.4.1/arm-linux/lib
#cd /root/usr/local/arm/3.4.1/arm-linux/lib //建立連結 #ln -s libspeex.so.2.0.0 libspeex.so #ln -s libspeex.so.2.0.0 libspeex.so.2 //以上的 步驟 E),可以直接手動把libspeex.so.2.0.0 , libspeex.so, libspeex.so.2三個檔案複製到加查編譯工具下的庫(lib)目錄下即可
F) 交叉編譯 linphone-1.2.0: 在編譯linphone之前先將ortp複製到 linphone-1.2.0目錄下 #cd /root/arm/linphone-1.2.0 #cd oRTP ##./configure --prefix=/root/armbuild --host=arm-linux --target=arm-linux --disable-static --enable-fixed-point --disable-glib //需要加上 --disable-glib(禁止庫),否則會應為缺少gthread 庫而無法編譯。 #make #make install
G)將產生的庫檔案及連結複製到交叉編譯工具的庫中(同步驟E) ##cp /root/armbuild/usr/lib/libortp.so.2.0.0 /root/usr/local/arm/3.4.1/arm-linux/lib
#cd /root/usr/local/arm/3.4.1/arm-linux/lib #ln -s libortp.so.2.0.0 libortp.so.2 #ln -s libortp.so.2.0.0 libortp.so
以此,就可以在沒有圖形介面(GUI)支援情況下編譯linphone
H) #cd /root/arm/linphone-1.2.0 #./configure --prefix=/root/armbuild --host=arm-linux --target=arm-linux --disable-static --disable-glib --enable-gnome_ui=no --disable-manual --enable-ipv6 --enable-alsa --with-osip=/root/armbuild --with-speex=/root/armbuild #make #make install //--enable-alsa :使能alsa語音編解碼方式,語音傳輸的另種方式為oss //--enable-ipv6 :使能ipv6
以上的--disable-static 語句使編譯不能產生靜態庫檔案,即不能使庫和可執行檔和為一體,而產生了另外單獨的庫支援檔案。如果需要把庫和可執行檔合成一個檔案,那麼不要使用這項。
就此編譯完畢,在/root/armbuild/bin 檔案中就可以找到可執行檔linphonec,把改檔案及相應的庫下載到開發板中, 在sch中相應的目錄下輸入./linphonec,即可以運行程式 如不能運行,則缺少庫支援,把剛產生的相應的 *.so.*檔案複製到開發板的lib目錄下即可。
|