Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29630
  • 博文数量: 3
  • 博客积分: 88
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-06 02:06
文章分类
文章存档

2011年(3)

分类: 嵌入式

2011-12-06 12:57:31

 
  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的不过感觉太复杂了,还是有时间想想吧
阅读(5189) | 评论(4) | 转发(4) |
0

上一篇:没有了

下一篇:NFS启动根文件系统的bootarg完整参数设置

给主人留下些什么吧!~~

never01012012-01-06 19:39:45

我们这方面的移植差不多,呵呵,有空交流交流

chenhao72538862011-12-08 13:11:49

坏坏小丸子: 来学习一下啊,LZ加油!.....
谢谢了

坏坏小丸子2011-12-08 00:43:05

来学习一下啊,LZ加油!

啦哆A梦2011-12-08 00:30:26

楼主的艰辛历程啊,( ^_^ )不错不错,感谢分享!