alsa-lib、alsa-utils编译

1.  ALSA的体系结构

官方主页  AlsaProject
主要跟编程相关是

2. alsa-lib编译

    打开READEME、INSTALL文件,大致浏览一遍 需要先 基本流程就是 ./configure && make && make_install,先后完成配置、编译和安装工作。

(1)首先 进行配置 主要指定 主机和交叉编译工具链

      ./configure --host=aarch64-linux --prefix=/mnt/d/work/code/alsa-lib-1.2.6.1/tmp --enable-shared=yes --enable-static=no --disable-python CC=/mnt/d/work/code/tx511_mpw/prebuilts/host/gcc/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc

解释:

     --prefix:后面install的目录,也就是编译出来后的文件所存放的目录。绝对路径。

     --enable-shared=yes --enable-static=no:动态编译还是静态编译,只能选择一个,必须选择

     --host:主机

     CC:交叉编译工具链

以下两个还未验证:

--with-configdir=/usr/local/share
--with-plugindir=/usr/local/lib/alsa_lib

     --with--configdir:

 在这里要注意 --with--configdir的选项.它将影响 include/config.h中的 ALSA_CONFIG_DIR 目录.

 它默认是你的--prefix目录.这样在嵌入式交叉编译将是一个桌面机的路径,在libasoud.so运行.会提示,如果出来这个提示,一般都是ALSA_CONFIG_DIR路径错误造成的.
 

 ALSA lib pcm.c:2145:(snd_pcm_open_noupdate) Unknown PCM default

aplay: main:546: audio open error: No such file or directory

 
--with-plugindir: 也是同样道理了.它是设为 ALSA_PLUGIN_DIR 宏.
 
 (2)编译 make
 (3)安装 make install

开发板发布注意:

在开发板上发布alsa库.除了libasound.so库以外,必须还要把 alsa.conf发布到板上--with-configdir所指向目录下的alsa目录,否则还是会报"audio open error: No such file or directory".
这个文件可以在make install后在你安装目录下的share找到alsa目录,把这个目录整个拷贝到开发板即可.     

3. alsa-utils编译

打开READEME、INSTALL文件,大致浏览一遍 需要先 基本流程就是 ./configure && make && make_install,先后完成配置、编译和安装工作。

(1)首先 进行配置 主要指定 主机和交叉编译工具链

./configure CC=/mnt/d/work/code/tx511_mpw/prebuilts/host/gcc/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc LDFLAGS="-L/mnt/d/work/code/alsa-lib-1.2.6.1/tmp/lib -lasound -latopology" --host=aarch64-linux --prefix=/mnt/d/work/code/alsa-utils-1.2.6/tmp --enable-static     CFLAGS="-I/mnt/d/work/code/alsa-lib-1.2.6.1/tmp/include"    --disable-xmlto --disable-alsamixer --with-libiconv-prefix=/mnt/d/work/code/alsa-lib-1.2.6.1/tmp

解释:

      --prefix:后面install的目录,也就是编译出来后的文件所存放的目录。绝对路径。

      --host:主机

     CC:交叉编译工具链

     --disable-alsamixer:表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃

    LDFLAGS: 链接库所在位置,主要是libasound等

    CFLAGS: 所需头文件。

 遇到问题:

(1.1)mv: cannot stat `t-ja.gmo': No such file or directory

        方法一:sudo apt-get install gettext

        方法二:创建改文件。

(1.2)configure: error: No linkable libasound was found.

         前面编译alsa-lib用的是静态编译,此处需要动态,所以需要把alsa-lib动态编译一次。

(2)make

(3)sudo make install

参考:

alsa 音频库的移植_linux嵌入式驱动软件开发-CSDN博客_录音模块交叉编译到开发板

https://www.iteye.com/blog/wx1569578408-2500463

alsa-lib及alsa-utils成功移植(原创)_寒夜_新浪博客

上一篇:github连接报"ssh: connect to host github.com port 22: Connection timed out"错误


下一篇:基于ubuntu-20.04.3的snort+Barnyard2+BASE的入侵检测系统安装时Barnyard2反编译时出错解决