ALSA-lib/utils 编译移植 及 问题解决

2019-07-13 08:38发布

转载地址: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目录放置其中