linphone 移植console

ARM 81浏览

移植前搞清楚linphone依赖库的关系,这个一般是移植工作的关键所在,还有一个关键是目标平台的交叉编译器
linphone-3.1.0依赖的库如下:
speex(又依赖libogg)
libosip2-3.1.0
libeXosip2-3.1.0
readline(optional)
好了,现在开始正式移植linphone到arm平台,由于我选用的arm平台对于动态库的支持有些特殊,所以我选用静态编译的方式。
首先选定toolchain,codesourcery的比较专业,就选这个吧arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,到
codesourcery的官方主页上下载,然后解压到一个目录下,然后将其加入到PATH
下载如上提到库的源代码,然后解压到指定目录。
本人喜欢将源代码,build,和安装目录分别指定,然后集中放在一个大目录下。
比如
#cd /work
#mkdir linphone
#cd linphone
#mkdir src build target
src: 为源代码目录,下载后的源代码包就解压在这个目录下
build: 编译目录,中间档和Makefile都在这个下面
target: 安装目录
编译libogg
#cd build
#mkdir libogg
#cd libogg
#../../src/libogg-1.1.3/configure --enable-static --disable-shared --host=arm-none-linux-gnueabi --prefix=/work/linphone/target
#make
#make install
编译speex
#cd ../
#mkdir speex
#cd speex
#../../src/speex-1.2beta3.2/configure --disable-shared --enable-static --host=arm-none-linux-gnueabi --prefix=/work/linphone/target
--with-ogg=/work/linphone/target
#make
#make install
编译libosip
#cd ../
#mkdir libosip
#cd libosip
#../../src/libosip2-3.1.0/configure --enable-static --host=arm-none-linux-gnueabi --prefix=/work/linphone/target --disable-shared
#make
#make install
编译libeXosip
#cd ../
#mkdir libeXosip
#cd libeXosip
#../../src/libeXosip2-3.1.0/configure --host=arm-none-linux-gnueabi --disable-shared --enable-static --prefix=/work/linphone/target
PKG_CONFIG_PATH=/work/linphone/target/lib/pkgconfig
#make
#make install

修改target/lib/libosip2.la
dependency_libs=' -lnsl /work/linphone/target/lib/libosipparser2.la -lpthread'
增加-lpthread
编译linphone
#cd ../
#mkdir linphone
#cd linphone
#../../src/linphone-3.1.0/configure --host=arm-none-linux-gnueabi --disable-nls --disable-manual --enable-gtk_ui=no
--prefix=/work/linphone/target --enable-static --disable-shared --disable-glib --with-osip=/work/linphone/target
PKG_CONFIG_PATH=/work/linphone/target/lib/pkgconfig --enable-alsa=no --enable-video=no --enable-strict=no --enable-artsc=no
#make LDFLAGS="-all-static"
#make install LDFLAGS="-all-static"

注: 可能在编译时出现类似错误。
checking for eXosip_subscribe_remove in -leXosip2... no
configure: error: Could not find eXosip2 library with version >= 3.0.2 !
使用libeXosip2-3.3.0和 libosip2-3.3.0版本即可。
linphone默认寻找库的路径是/usr/local/lib,如果把eXosip安装再其他目录下,也可能会出现上面的错误.