ALSA库安装

一、基本操作

从 ALSA 网上(http://www.alsa-project.org)获得 alsa-lib 库下载到 linux 上。

本文章创作时最新版本 alsa-lib-1.1.5,则下文以该版本为例子进行编写。

使用命令 tar –xjf  对下载下来的 ALSA 库压缩包进行解压,并进入解压后文件目录。

# tar -xjf alsa-lib-1.1.5.tar.bz2
# cd alsa-lib-1.1.5


二、交叉编译版

# ./configure --host=arm-linux-gnueabihf --prefix=/usr/local/sunxi --enable-static --disable-shared
# make ARCH=arm
# make install

其中,--host 为编译工具,此处为交叉编译工具 arm-linux-gnueabihf

          --prefix 使生成的所有文件统一放到某下 此处路劲为 /usr/local/sunxi/

编译完成。


三、直接编译版

# ./configure
# make
# make install

很干净,编译完成。


四、测试

创建一个C文件demo.c,内容如下

#include 
#include 
int main() 
{
    int val;

    printf("ALSA library version: %s\n",
                       SND_LIB_VERSION_STR);

    printf("\nPCM stream types:\n");
    for (val = 0; val <= SND_PCM_STREAM_LAST; val++)
            printf(" %s\n",
                  snd_pcm_stream_name((snd_pcm_stream_t)val));

    printf("\nPCM access types:\n");
    for (val = 0; val <= SND_PCM_ACCESS_LAST; val++)
    {
            printf(" %s\n",
                  snd_pcm_access_name((snd_pcm_access_t)val));
    }

    printf("\nPCM formats:\n");
    for (val = 0; val <= SND_PCM_FORMAT_LAST; val++)
        {
        if (snd_pcm_format_name((snd_pcm_format_t)val)!= NULL)
        {
                  printf(" %s (%s)\n",
                    snd_pcm_format_name((snd_pcm_format_t)val),
                    snd_pcm_format_description(
                            (snd_pcm_format_t)val));
        }
    }

    printf("\nPCM subformats:\n");
    for (val = 0; val <= SND_PCM_SUBFORMAT_LAST;val++)
        {
        printf(" %s (%s)\n",
                  snd_pcm_subformat_name((
                snd_pcm_subformat_t)val),
                  snd_pcm_subformat_description((
                snd_pcm_subformat_t)val));
    }

    printf("\nPCM states:\n");
    for (val = 0; val <= SND_PCM_STATE_LAST; val++)
            printf(" %s\n",
                   snd_pcm_state_name((snd_pcm_state_t)val));

    return 0;
}

------------------------------------------------

交叉编译版

# arm-linux-gnueabihf-gcc -o demo demo.c -L/usr/local/sunxi/lib -I/usr/local/sunxi/include -lpthread -dl -lasound -lm -static

其中,-lpthread       多线程库

          -ldl                 显示加载动态库

          -lasound        ALSA音频库

          -lm                 数学库

-static 所有库加载成静态库

编译完成后,复制到目标 ARM linux 系统,添加权限

# chmod 755 demo

直接编译版

# gcc -o demo demo.c -lasound

------------------------------------------------

运行,显示各种信息,则说明大功告成。

# ./demo

五、其他

在使用alsa库交叉编译完后,需要将 /usr/local/sunxi/shared/alsa/ 目录下

两个文件假 cards 和 pcm 以及一个文件 alsa.conf 复制到相应ARM嵌入式linux系统目录 /usr/local/share/内

你可能感兴趣的:(linux)