转载地址:https://blog.csdn.net/chunleigan/article/details/21000127
库和工具版本为:
alsa-lib-1.0.27.2 alsa-utils-1.0.27.2
1.首先对压缩文件进行解压;
2.库编译
./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --prefix=/home/sabergcl/alsa/alsa_lib --disable-mixer
make
make install
编译静态库:增加--enable-static=yes --enable-shared=no
工具编译
alsa-utils:
./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --prefix=/home/sabergcl/alsa/alsa_utils --with-alsa-inc-prefix=/home/sabergcl/alsa/alsa_lib/include --with-alsa-prefix=/home/sabergcl/alsa/alsa_lib/lib
--disable-alsamixer --disable-xmlto --disable-mixer
make
make install
将编译好的库和执行文件放入nfs中:
1.alsa_lib
cp ALSA/alsa_lib/lib/libasound.* ./netranfs/lib/
alsa的配置文件拷贝除了库之外alsa的配置文件也需要拷贝到目标板根文件系统中
这里需要注意的是share目录在目标板的存放位置必须和在主机的存放路径一致,
比如在主机编译时候上存放在/home/sabergcl/alsa/alsa_lib/,
那么我们就得把share放在目标板上的这个路径里
cp -rf share /home/sabergcl/alsa/alsa_lib/
alsa_utils
将alsa-utils/bin目录下的内容拷贝到目标板根文件系统中的bin下
cp bin/* ~/netranfs/bin/
并注意在nfs中修改权限
-------------------------------------------------
4.测试
#cat /proc/asound/devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33: : timer
# ls -l /dev/snd/
crw-rw---- system audio 116, 33 1970-01-01 00:00 timer 定时器接口
crw-rw---- system audio 116, 0 1970-01-01 00:00 controlC0 控制接口
crw-rw---- system audio 116, 24 1970-01-01 00:00 pcmC0D0c PCM接口
crw-rw---- system audio 116, 16 1970-01-01 00:00 pcmC0D0p
如果没有snd目录则创建
mkdir /dev/snd
ln /dev/controlC0 /dev/snd/controlC0
ln /dev/pcmC0D0c /dev/snd/pcmC0D0c
ln /dev/pcmC0D0p /dev/snd/pcmC0D0p
ln /dev/timer /dev/snd/timer
播放wav文件
aplay test.wav
Playing WAVE 'test.wav' : Unsigned 8 bit, Rate 16000 Hz, Mono
录音
arecord -d 20 -c 2 -t wav -r 8000 -f "Signed 16 bit Little Endian" a.wav
以20秒的间隔(-d 20),立体声(-c 2),频率是 8000Hz来录制Wave格式音频
-------------------------------------------------
出现问题1:
无法获取 t-ja.gmo 的文件状态(stat):
下载gettext: apt-get install gettext
解决:touch alsaconf/po/t-ja.gmo
出现问题2:
/usr/bin/install: cannot create regular file `/lib/udev/rules.d/90-alsa-restore.rules': Permission denied
make[3]: *** [install-udevrulesDATA] Error 1
make[3]: Leaving directory `/old_home/home/ganchunlei/alsa/alsa-utils-1.0.27.2/alsactl'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/old_home/home/ganchunlei/alsa/alsa-utils-1.0.27.2/alsactl'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/old_home/home/ganchunlei/alsa/alsa-utils-1.0.27.2/alsactl'
make: *** [install-recursive] Error 1
解决:加入sudo
出现问题3:
ALSA lib conf.c:3707:(snd_config_update_r) Cannot access file /home/sabergcl/alsa/alsa_lib/share/alsa/alsa.conf
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
解决:
在nfs中添加相同路径/home/sabergcl/alsa/alsa_lib/,并将lib编译出的share目录放置其中