Chinaunix首页 | 论坛 | 博客
  • 博客访问: 836845
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类:

2012-03-01 17:00:18

 
  LINUX中的音频驱动有OSS和ALSA两种,OSS是商业性质的而且只公布了部分源码,现在内核里带的都是老版本的,并且不支持多线程的(我再移植过程中发现,OSS只能在一时刻提供一种功能,录音的话就不能播音,播音的话就不能录音),ALSA是内核中现在最常用的音频驱动,支持多线程并且是完全开源的。
OSS提供的设备接口有 mixer和dsp,ALSA提供pcm,midi,mixer,controlc,seq,timer等,要成功实现语音要使用ALSA驱动,在移植前期请确保你的内核中还有ALSA驱动,一般内核都带有驱动,只是设备文件的目录可能并不在默认的/dev/snd下并且要移植相应的库文件到板子上,,这时候你就要再编译的时候注意参数的设置,在MINI上首先ls看下ALSA的设备文件是否都在,若都再得话就可以开始编译了。
 
1.首先编译ALSA的库文件
  . --prefix=/home/chen/linphone/arm_target/ --host=arm-linux CC=arm-linux-gcc --disable-aload --disable-rawmidi --disable-seq --disable-ucm --disable-alisp --disable-old-symbols --disable-python --with-alsa-devdir=/dev
2.再编译linphone依赖的库,请再linphone的源码中读取相关的版本依赖关系

(1)cd ncurses-5.7/
root@chenhao-desktop:/usr/local/arm/ncurses-5.7/#
 ./configure --prefix=/install --host=arm-linux --with-gnu-ld --with-shared
/ncurses-5.7/#
 make
/ncurses-5.7/#
 make install DESTDIR=/home/chen/linphone/arm_target/

(2)cd readline-6.1/
/readline-6.1/#
 
./configure --prefix=/install --host=arm-linux --with-gnu-ld --disable-static
/readline-6.1/#
 make
/readline-6.1/#
 make install DESTDIR=/home/chen/linphone/arm_target/
在这里,发现--with-gnu-ld无效,后面发现配置参数不支持这个参数,不知道怎么回事,也许是本身默认吧????

(3)cd libosip2-3.3.0/
/libosip2-3.3.0/#
 ./configure --prefix=/install --host=arm-linux --with-gnu-ld --disable-static
/libosip2-3.3.0/#
 
make
/libosip2-3.3.0/#
 make install DESTDIR=/home/chen/linphone/arm_target/

(4)cd  libbogg-1.2.0/
/libbogg-1.2.0/#
 ./configure --prefix=/install --host=arm-linux
/libbogg-1.2.0/#
 make
/libbogg-1.2.0/#
 make install DESTDIR=/home/chen/linnphone/arm_target/

(5)cd speex-1.2rc1/
  ./configure --prefix=/home/chen/linphone/arm_target/ --host=arm-linux --disable-static --enable-fixed-point --enable-arm-asm --with-ogg-libraries=/home/chen/linphone/arm_target --with-ogg-includes=/home/chen/linphone/arm_target

/speex-1.2rc1#
 make
/speex-1.2rc1#
 make install DESTDIR=/home/chen/linphone/arm_target/

(6)cd libeXosip2-3.1.0/
/libeXosip2-3.1.0./configure OSIP_CFLAGS=-I/home/chen/linphone/arm_target/include OSIP_LIBS=-"L/home/chen/linphone/arm_target -losip2 -losipparser2" --prefix=/home/chen/linphone/arm_target --host=arm-linux

/libeXosip2-3.1.0# make
可能会出现个缺少文件的错误,在libosip中拷贝到安装目录下,
/libeXosip2-3.1.0# make -k install DESTDIR=/home/chen/linphone/arm_target/
 
到此,linphone的库编译就告一段落了
3.下来就要编译linphone了
/linphone-3.2.0# ./configure --prefix=/home/chen/linphone/arm_target --host=arm-linux --with-gnu-ld --disable-static  --enable-alsa=yes  --disable-glib --with-osip=/home/chen/linphone/arm_target  --with-readline=/home/chen/    SPEEX_CFLAGS="I/home/chen/linphonc/arm_target/include"  SPEEX_LIBS="-L/home/chen/linphone/arm_target/ lspeex lspeexdsp"  OSIP_CFLAGS="-I/home/chen/linphone/arm_target/include"  OSIP_LIBS="-L/home/chen/linphone/arm_target -losip2 -leXosip2 -losipparser2" --disable-video --disable-gtk_ui PKG_CONFIG_PATH=/homelinphone/arm_target/lib/pkgconfig/

 

记的要--enable-alsa=yes


/linphone-3.2.0# make
 
/linphone-3.2.0# make -k install DESTDIR=/home/chen/linphone/arm_target
 
此时一个LINPHONE就编译成功了,把工具和相关库拷贝到板子上,建立相关符号连接,启动LINPHONE查看下声卡设备是否发现了ALSA,如果没有说明期中没有编译成功,因为LINPHONE默认的是OSS声卡,但是要实现语音必须用ALSA,就检查参数,看是否指明了让其自动寻找ALSA
,此时一个没有界面的LINPHONE就实现了,要实现界面除非你的板子上的图形系统是基于WINDOW X的,你在编译linphone时去掉--disable-gtk_ui并且编译了GTK的库到安装文件中,然后把GTK的库考到板子上,应该就可以了(我没有尝试过)我的板子上图形是QT得,若使QT的只有自己调用LINPHONE的相关库来写了,感觉很麻烦,不知道由什么方便的方法,有人说可以修改相关的linphone代码把GTK的改成QT的不过感觉太复杂了,还是有时间想想吧
阅读(842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~