alsa-lib、alsa-utils编译
作者:互联网
1. ALSA的体系结构
官方主页 AlsaProject
主要跟编程相关是
- alsa-lib. ALSA 应用库(最常用)
- alsa-driver 一些常见芯片的ALSA驱动代码,一般内核会集成.
- alsa-firmware 一些DSP或ASIC的专用的微码(运在芯片之上,启动时由LINUX装入到硬件中).
- alsa-utils 一般ALSA小的测试工具.如aplay/arecord 播放和录音小程序.
- alsa-oss 用alsa接口模拟旧的oss接口.
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成功移植(原创)_寒夜_新浪博客
标签:ftp,lib,--,utils,编译,make,alsa 来源: https://blog.csdn.net/yangguoyu8023/article/details/122186697