开发平台: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