pulseaudio编译 -- ALP X86模拟器环境

 

环境:
alp-sim 1.1.0
rootstrap: Main_Monolith_x86_rel_prod_gcc423_Validation_Roms
pulseaudio 0.9.15

 

依赖关系
1. > Libtool 2.0.   From 0.9.15 onwards, libtool 2.x will be required. 我使用的2.2.6b

./configure --prefix=/usr

make;make install

2. > gdbm. 0.9.15 需要这个数据库包的支持
GDBM是DBM的GNU版本。DBM是UNIX系统的数据库,使用hash保存非结构化数据。它不支持SQL。

./configure --prefix=/usr

make; make install

我在这里用的是1.8.3版本,是可以下到最新的了,但是仍然很老了,这个项目很久没有更新了。因为老所以问题也比较多。如果你make install不能通过,就修改makefile吧
      找到 install: libgdbm.la gdbm.h gdbm.info, 将它的内容修改为如下:(就是将指定用户和组的安装选项移除)
        $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) /
                $(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) /
                $(INSTALL_ROOT)$(infodir)
        $(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la
        $(INSTALL_DATA) gdbm.h /
                $(INSTALL_ROOT)$(includedir)/gdbm.h
        $(INSTALL_DATA) $(srcdir)/gdbm.3 /
                $(INSTALL_ROOT)$(man3dir)/gdbm.3
        $(INSTALL_DATA) $(srcdir)/gdbm.info /
                $(INSTALL_ROOT)$(infodir)/gdbm.info
 
3. > Intltool. 

 intltool is a set of tools to centralise translation of many different file formats using GNU gettext-compatible PO files。

先要把intltool更新到0.35以上。sbox里面的是0.33
下载,编译很简单,但是make install后发现pulseaudio的 configure仍然过不了,intltool版本还是0.33。但我确实下的是0.40.6。
原来 /scratchbox/devkits/doctools/bin中有个 intltoolize
pulseaudio 的 configure 每次执行"intltoolize --version"检查版本时,跑的就是这里的这个脚本
所以这样:
./configure --prefix=/scratchbox/devkits/doctools
make

注意make install 要退出 sbox执行,否则找不到目录,找到相对于sbox中 intltool目录的本机绝对目录
make install

例如:我在 /scratchbox/users/cuigang/home/cuigang/intltool-0.40.6

4. > libspeexdsp

1.2及以上版本

./configure --prefix=/usr

make;make install

5. > alsa-lib

使用1.0.20以上,我使用的1.0.22. 这样PA configure的时候才有 ALSA support enable。

./configure  --prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-alisp --disable-python --disable-old-symbols --disable-seq --disable-rawmidi --disable-maintainer-mode

make;make install

6. > alsa-plugin

这个安装与否,似乎没有什么影响。因为 alsa-lib 用了1.0.22。索性,plugin也更新了

./configure  --prefix=/usr --localstatedir=/var --sysconfdir=/etc

make; make install

 

编译

编译之前替换文件 core-util.c 到 src/pulsecore/core-util.c. 为什么下面说明

1. >  ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-rpath --disable-dbus --disable-bluez --disable-samplerate --disable-solaris --disable-gconf --disable-avahi --disable-jack --disable-lirc --disable-hal --disable-polkit --disable-manpages --disable-xmltoman --enable-ltdl-install=no

2. > make

这个步骤可能会有一个man/目录的编译错误,可以在configure的时候,把--disable-manpages拿掉,可以避免这个错误。0.9.21版本编译不会有这个错误,似乎configure文件有问题。

3. > make install

这个编译过程还算长,所以

make -j2; make install -j2

如果你用4核CPU,可以 -j4


运行测试程序

启动模拟器,登录

paplay /usr/share/sounds/system/startup.wav

运行paplay的时候会去读 /etc/pulse/client.conf这个文件,这个文件的内容指定了通过什么方式把声音数据传送到哪个服务器,在模拟器环境这个文件的内容如下:

 default-server=tcp:192.168.3.100




运行pulseaudio进程
 
1. 建立用户
因为pulseaudio进程一般不运行于root下,所以暂时建立一个普通用户,建立方法:
  打开 /etc/passwd 增加一行:

cuigang::1980:1006::/var/home/cuigang:/bin/sh

需要注意的是1006是group id,要选择一个已经存在的 group id。 看 /etc/group 这个文件定义的group

2. 登录

启动模拟器后,可以用用户cuigang登录,不需要密码,登录后,自己建立一个目录

pa的权限检查很严格,为了方便,给足权限

umask 00

mkdir /var/home/cuigang

然后退出重新登录,pwd, 可以发现,已经在自己的工作目录了

3. 运行

pulseaudio -nC

因为没有合适的配置文件,所以就不通过任何脚本加载任何东西,启动一个pulseaudio框架并进入命令行模式。

最后的说明
 
 在模拟器环境,使用编译出来的PA,声音是可以出来的。这个可以通过paplay来验证。但是运行PA还是遇到了些状况。主要原因是因为PA对用户目录权限用户组等信息的检查比较严格。所以,我对相关的代码做了改动。具体参见附件。这里列出一些当时的状况
 
1. > 关于打开配置文件。
依次检查,环境变量设定,HOMEDIR/.pulse/, /etc/pulse/, 代码处理在第二个目录出了问题。注释掉
2. > 有的时候mkdir函数失败,估计是homedir权限设定的问题
3.> 代码检查当前用户的 gid, uid 和 工作目录的 gid , uid是否完全匹配。 检查 目录的mode 和 建立工作目录的 mode是否匹配, 注释掉
 
这样,编译出的PA-0.9.15在模拟器环境下,可以在ALSA plugin的触发下,将声音传递到local播放,并且,可以在模拟器控制台下启动PA进程,一个空空的PA工作框架。

-->

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值