alsa编译及使用

来源:互联网 发布:学生会网络技术部职责 编辑:程序博客网 时间:2024/05/29 12:34

开发平台:OrangePi

CPU:全志 H2+

虚拟机:Ubuntu 12.04 64位



注意:编译h2应用程序需使用gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux交叉编译工具,而不能使用OrangePi-Kernel\brandy\gcc-linaro里的arm-linux-gnueabi交叉编译工具

arm-linux-gnueabihf-gcc -v 查看是否安装成功


alsa库及可执行程序是使用虚拟机中/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux编译器编译的,可使用在h2或其它开发板上.
使用下面的方法编译完成后,会在虚拟机/home目录下生成alsa目录,里面包含了alsa库及可执行文件.本目录中的alsa目录就是从/home中复制过来的.




一、编译alsa-lib
alsa编译安装路径默认为/usr,如果编译时指定路径 --prefix = xxx,则安装到板子上也必须为此路径,则编译时可使用两种方法:


1.编译时不指定路径,以免破坏板子的文件系统,但会改变/usr目录名称,如果操作不当会损坏ubuntu系统。
且本ubuntu系统更改环境变量后找不到arm-linux-gnueabihf-gcc编译器,所以暂不使用此方法。
cd /
mv /usr /usr_bk
echo $PATH
得到环境变量为:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin


修改环境变量:
export PATH=/usr_bk/lib/lightdm/lightdm:/usr_bk/local/sbin:/usr_bk/local/bin:/usr_bk/sbin:/usr_bk/bin:/sbin:/bin:/usr_bk/games:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin


./configure --host=arm-linux-gnueabihf --enable-shared --disable-python


make
sudo mkdir /usr
sudo chown book:book /usr
make install
sudo cp -rf /usr /work/projects/alsa/
sudo rm -rf /usr
sudo mv /usr_bak /usr
恢复环境变量:
export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin


/*
把头文件和库复制进交叉工具链里
cd /work/projects/alsa/usr/include
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include


cd /work/projects/alsa/usr/lib
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
*/


把库复制到根文件系统的lib目录下




2.选定/home/alsa目录为存放alsa库编译结果的目录
首先将alsa-lib解压,将其目录里的所有文件拷贝到/home目录里。如果选择其它目录,在下面make时会抱错smixer-sbase.la libtool: link: only absolute run-paths are allowed,网络上没有找到好的解决办法,猜想是路径的问题,使用此方法得以解决。
./configure --host=arm-linux-gnueabihf --prefix=$PWD/alsa --enable-shared --disable-python --with-configdir=$PWD/alsa/alsa_lib/share --with-plugindir=$PWD/alsa/alsa_lib/lib
make
make install




二、编译alsa-utils


./configure --host=arm-linux-gnueabihf --prefix=$PWD/alsa CFLAGS="-I/home/alsa/include" LDFLAGS="-L/home/alsa/lib -lasound" --disable-alsamixer --disable-xmlto --disable-nls
这里,如果不指定--disable-nls,会报cannot stat 't-ja.gmo'的错。
make
make install




三、拷贝到板子上,运行
1编译完成后,会在/home/alsa目录里得到alsa可执行文件、库文件、头文件。
2将alsa目录拷贝到板子/home文件夹下
3将alsa/lib里的所有文件拷贝到开发板/usr/lib目录下,如果不拷贝,在运行aplay\arecord等程序时会提示找不到libasound.so动态链接库
cp alsa/lib/* -rf /usr/lib
4运行 
cd /home/alsa/bin    
录音:
./arecord -d 10 -f cd test.wav  //以CD质量录制test.wav文件10秒钟.
./arecord -d 10 -r 48000 test.wav




调节音量:
amixer controls
amixer cget numid=1
amixer cset numid=1 30
原创粉丝点击