Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3820961
  • 博文数量: 197
  • 博客积分: 10086
  • 博客等级: 上将
  • 技术积分: 5145
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-13 10:50
文章分类

全部博文(197)

文章存档

2011年(2)

2009年(30)

2008年(165)

我的朋友

分类: 系统运维

2008-04-10 21:32:29

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 包中自带,如果没有下载ortp-0.7.0版本)

到网站下载

其他工具见 :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 文件copyusr/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目录下即可。

本人用的是magic linux,内核2.6.15,交叉编译工具

arm-linux-gcc-3.4.1

阅读(1120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~