linphone on arm-linux (cross-compiling on host for target architecture)
1) linphone-1.2.0
2) libosip2-2.2.2
3) libogg-1.1.0
4) speex-1.1.11.1
5) ortp ( linphone
其他工具見 :http://telestarnotes.blogspot.com/2004_12_01_archive.html
a) 編譯環境設定:
arm交叉編譯工具::
直接解壓到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-a** --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 語句使編譯不能生成靜態庫檔案,即不能使庫和可執行檔案和為一體,而生成了另外單獨的庫支援檔案。如果需要把庫和可執行檔案合成乙個檔案,那麼不要使用這項。
在sch中相應的目錄下輸入./linphonec,即可以執行程式
如不能執行,則缺少庫支援,把剛生成的相應的*.so.*檔案複製到開發板的lib目錄下即可。
本人用的是magic linux,核心2.6.15,交叉編譯工具
arm-linux-gcc-3.4.1
design bymyth wu
編譯 交叉編譯
交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...
交叉編譯(2) 交叉編譯鏈
什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...
交叉編譯 Go 交叉編譯 跨平台編譯
golang 支援交叉編譯,在乙個平台上生成另乙個平台的可執行程式 cgo enabled 0 goos linux goarch amd64 go build main.go cgo enabled 0 goos windows goarch amd64 go build main.go cgo ...