alsa库移植,生成对应静态库

六、ALSA lib库接口 使用 ALSA 的 lib 库中的 snd_pcm_xxx 等标准接口函数,操作 /dev/snd/pcmC0D0c或pcmC0D0p 等录放音设备节点,相当于在 OSS 框架下通过 ioctl 设置不同参数去操作 /dev/dsp 设备ALSA功能丰富,可以设置音频参数,DMA buffer 大小、分块数量,buffer 阀值等。 阅读详情

1.下载源码,源码路径:https://www.alsa-project.org/files/pub/lib/

2.配置Makeflie文件,如交叉编译工具链路径,编译固件输出路径,模块使能,是否需要生成静态库等;

# 1. 进入 alsa-lib 源码目录
cd /home/kfb/workplace/rk3506/app/alsa_test/Lib/alsa-lib-1.2.12

# 2. 清理旧配置和编译结果
make distclean

# 3. 重新配置(启用静态库),每一行代码的详细解释看下文。
./configure \
    --host=arm-buildroot-linux-gnueabihf \
    --prefix=$(pwd)/output \
    --disable-python \
    --disable-topology \
    --disable-mixer \
    --disable-rawmidi \
    --disable-seq \
    --disable-timer \
    --disable-hwdep \
    --disable-tests \
    --disable-utils \
    --enable-static \
    --disable-shared \
    CC=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-gcc \
    CXX=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-g++ \
    AR=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ar \
    RANLIB=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ranlib \
    STRIP=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-strip

# 4. 编译
make -j4 V=1

# 5. 安装到 output
make install

3.make -j4;

4.make install(这一步才会生成对应的静态库文件);

5.如果报以下类似路径错误,往下看:

错误原因:编译alsa库时,路径已经强制定死,烧录目标板时找不到该路径。

修改路径--prefix=/usr \ 并重新编译即可:

# 1. 进入 alsa-lib 源码目录
cd /home/kfb/workplace/rk3506/app/alsa_test/Lib/alsa-lib-1.2.12

# 2. 清理旧配置和编译结果
make distclean

# 3. 重新配置(启用静态库),每一行代码的详细解释看下文。
./configure \
    --host=arm-buildroot-linux-gnueabihf \
    --prefix=/usr \
    --disable-python \
    --disable-topology \
    --disable-mixer \
    --disable-rawmidi \
    --disable-seq \
    --disable-timer \
    --disable-hwdep \
    --disable-tests \
    --disable-utils \
    --enable-static \
    --disable-shared \
    CC=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-gcc \
    CXX=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-g++ \
    AR=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ar \
    RANLIB=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ranlib \
    STRIP=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-strip

# 4. 编译
make -j4 V=1

# 5. 安装到当前路径install,没有会自动创建
make install DESTDIR=$PWD/install

总体作用总结

这条 configure命令的整体效果是:

1.交叉编译 alsa-lib​

​2.只生成静态库 libasound.a​

​3.裁剪掉不必要模块​

4.安装到源码目录下的 output/​

5.完全使用 Buildroot 提供的 ARM 工具链。

configure配置相关说明

“./configure \”:用于检测系统环境、工具链、依赖库,并生成 Makefile。

“--host=arm-buildroot-linux-gnueabihf \”:指定目标平台(host),编译出来的程序将在 ​ARM + glibc + hard float​ 架构上运行。

“--prefix=$(pwd)/output \”:设置编译输出路径,$(pwd)表示当前源码目录。

“--disable-python \”:禁用python,避免引入 Python 头文件和运行时依赖。

“--disable-topology \”:禁用 ALSA topology 模块,以此类推禁用不需要的模块。

“--enable-static \”:重点,我是要编译静态库,所以要使能。

“CC=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-gcc \”:强制指定交叉工具链(非常重要)

“CXX=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-g++ \”:指定 ​C++ 编译器,alsa-lib 主要是 C,但 configure 仍会检测 C++ 工具链。

“AR=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ar \”:指定归档工具,用于生成 .a静态库。

“RANLIB=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-ranlib \”:指定 ranlib,用于生成静态库的索引(symbol index)。

“STRIP=/home/kfb/workplace/rk3506/arm-buildroot-linux-gnueabihf/bin/arm-buildroot-linux-gnueabihf-strip”:指定 strip,用于去掉调试符号(在 make install-strip时使用)。

异常排查思路

make编译后没有固件输出,排查方法,当前目录下会有一个config.log,可以查看编译情况具体是哪里有问题。

嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得 ALSA是一个完全开放源代码的音频驱动程序集,除了像OSS那样提供了一组内核驱动程序模块之外,ALSA还专门为简化应用程序的编写提供了相应的函数库,与OSS提供的基于ioctl的原始编程接口相比,ALSA函数库使用起来要更加方便一些。利用该函数库,开发人员可以方便快捷的开发出自己的应用程序,细节则留给函数库内部处理。当然 ALSA也提供了类似于OSS的系统接口,不过ALSA的开发者建议应用程序开发者使用音频函数库而不是驱动程序的API 阅读详情

相关推荐

ALSA-lib/utils 编译移植 及 问题解决

库和工具版本为: alsa-lib-1.0.27.2 alsa-utils-1.0.27.2 1.首先对压缩文件进行解压; 2.库编译 ./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --prefix=/home/sabergcl/alsa/alsa_lib --disable-mixer m

chunleigan的专栏 4569

【音视频 | ALSA】ALSA是什么?ALSA框架详细介绍

简单介绍ALSA架构,包括了ALSA驱动,以及用户空间的ALSA库:alsa-lib、alsa-utils、alsa-tools、alsa-firmware、alsa-plugins、alsa-oss、pyalsa

wkd_007的博客 1万+

ALSA 1.2.2 嵌入式移植实战:aarch64 平台静态库编译与 aplay/arecord 工具链集成

本文详细介绍了在aarch64架构的嵌入式平台上完成ALSA 1.2.2静态库的编译与工具链集成的实战步骤。涵盖环境准备、静态库编译配置、工具链集成、目标系统部署及高级优化等内容,帮助音频工程师快速构建嵌入式Linux音频解决方案。

csxc65837的博客 382

Linux项目设计:ALSA库安装(声卡)、语音识别、文字转语音、语音转文字

文章目录一、ALSA库的安装使用(一)基本概念(二)交叉编译 ALSA 库及其工具集(三)ALSA程序模块二、科大讯飞语音识别(一)下载语音识别包(二)语音转文字包使用 (三)语音转文字包使用 一、ALSA库的安装使用 (一)基本概念 Linux内核本身具备专门的音频模块,叫ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)。ALSA是Linux处理音频的基本接口,但ALSA只提供基层的接口,操作较为繁复,一般情况下可以直接使用其附带提供的 utils 工

mbs706的博客 1万+

万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

m0_61985580的博客 3724

安防相机宽动态(WDR)技术解析:从原理到实战应用

本文深入解析安防相机宽动态(WDR)技术原理,对比多次曝光与DOL-WDR等实现方式,并区分硬件WDR与数字WDR(DWDR)的本质差异。文章重点阐述了WDR在逆光出入口、夜间道路监控等五大典型场景的实战应用与调参技巧,旨在帮助用户根据实际需求正确选择与配置,确保监控系统在复杂光线下清晰成像。

weixin_29191081的博客 428

ALSA系统简析

Audio ALSA 概述

奶牛养殖场小马 1965

手把手调试AD9653的LVDS数据采集:从VIO抓波形到用F0/F8帧对齐的实战心得

本文详细介绍了AD9653高速ADC与Xilinx 7系列FPGA(如7z035)的LVDS数据采集调试实战经验。从硬件环境搭建、Vivado工具链配置到LVDS数据对齐技巧,重点分享了利用VIO抓取波形和使用F0/F8帧对齐的实用方法,帮助工程师快速解决高速数据采集系统中的信号完整性问题。

weixin_29169899的博客 702

嵌入式音频编程——alsa库使用

0 资料库:alsa编程基本思路及编程框架 1 嵌入式上层音频编程原理:上层开发------>> 调用中间层(alsa库)<<------驱动开发关联中间层 <<------硬件。 所以只需遵循alsa库规则开发上层应用程序,在任何一个遵循alsa库开发的驱动关联的硬件,该应用程序都可以移植到该平台,我们的重新如何使用alsa库开发自己想要的东西。 2 ...

墨小白 1万+

LightGBM处理类别特征和缺失值有多省心?一个真实业务数据案例带你上手

本文通过真实电商数据案例,详细解析了LightGBM如何高效处理类别特征和缺失值。相比传统方法,LightGBM仅需一行代码即可自动处理高基数类别特征和缺失值,大幅提升模型训练效率和预测准确度,特别适合业务场景中的脏数据处理。

weixin_30689307的博客 460

matlab处理las点云(1)——las/laz格式解析【2024最新版】

matlab中的las/laz格式解析。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 8460

嵌入式linux下Alsa的移植和使用

一、ALSA音频架构简单介绍 ALSA是Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System。开放声音系统)。ALSA的主要特性包含:高效地支持从消费类入门级声卡到专业级音频设备全...

ProYuan的博客 2663

鸿蒙开发之hdc命令行

hdc(HarmonyOS Device Connector)是HarmonyOS为开发人员提供的用于调试的命令行工具,通过该工具可以在windows/linux/mac系统上与真实设备进行交互。

xiangzhihong8的专栏 5828

android 编译alsa,Android : alsa-lib 移植

一、官网下载lib源码网址:http://www.alsa-project.org/main/index.php/Download#alsa-lib左击:Stable Release列表中的【1.1.3】(移植的此版)修改后的源码压缩包下载链接:http://pan.baidu.com/s/1eSorykM 密码:rpiy二、安装android平台交叉编译工具链:1.用apt直接装:sudo ap...

weixin_29691667的博客 964

手把手教您国内安装 Claude Code 并配置自定义大模型(包含New-API中转和可视化管理工具的使用)

国内免魔法畅用 Claude Code!手把手教你 Windows 安装、配置文件写法、对接阿里百炼 / DeepSeek / 智谱✨,附完整参数、正确命令、三方工具管理方案,新手一次成功!✅

XiaoqiangClub的博客 3782

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

alsa-lib、alsa-utils编译

alsa-lib、alsa-utils编译

yangguoyu8023的博客 3404

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ALSA-Lib 与 ALSA-Utils 移植与configure: error: No linkable libasound was found.解决

1、首先需要从对应版本的 ALSA-Lib 和 ALSA-Utils 源代码(版本差异不大,一般选择最新稳定版即可)。

欢迎来到我的博客 586

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

嵌入式linux alsa,嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得

***************************************************************************************************************************作者:EasyWave ...

weixin_42557803的博客 726

嵌入式Linux音频开发:ALSA工具aplay/arecord交叉编译移植实战

在嵌入式Linux音频开发中,ALSA(Advanced Linux Sound Architecture)是处理音频输入输出的核心框架,它通过提供统一的API接口,管理底层音频硬件驱动。其工作原理基于设备文件抽象和插件系统,使得应用层可以便捷地进行音频播放与录制。这一技术对于嵌入式多媒体设备、智能硬件和物联网终端具有重要价值,能够实现高质量的实时音频处理。在实际应用场景中,开发者常需在资源受限的嵌入式平台上部署ALSA命令行工具,用于快速验证音频硬件通路和驱动功能。本文聚焦于将ALSA工具集中的aplay

weixin_30458043的博客 595

1-1. OSS/ALSA 声卡的驱动与配置和 Madplay 嵌入式播放器的移植

  报警子系统 一.OSS/ALSA 声卡的驱动与配置   声卡驱动中传统的OSS构架在02年被收购后即不开源,并且OSS的混音效果不好->因此ALSA构架孕育而生。 ALSA(高级音频构架,目前应用广泛),但是为了向前兼容传统的OSS应用,故将ALSA驱动按照OSS接口形式进行封装,由ALSA库的支持,可以达到很好的驱动效果。 使用步骤:   a. 配置内核 " make me...

weixin_30408675的博客 232

alsa-lib&alsa-utils移植到arm的脚本

搞过系统的人应该知道framework和driver之间有一层lib,下面就讲一下音频框架中对应的lib库和一些工具alsa-lib&alsa-utils。 alsa-lib for arm: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #!/bin/bash echo "Building alsa li

Peter的专栏 1841

避坑指南:SS528开发板ALSA音频驱动移植,解决‘unknown symbol’和配置文件路径错误

本文详细介绍了在SS528开发板上移植ALSA音频驱动的完整避坑指南,重点解决‘unknown symbol’错误和配置文件路径问题。从内核模块依赖分析到alsa-lib交叉编译,再到应用层开发实战技巧,提供了一套系统化的解决方案,帮助开发者高效完成嵌入式音频系统构建。

weixin_33672109的博客 577

ALSA 1.2.2 嵌入式移植实战:aarch64 交叉编译与 aplay/arecord 工具链配置

本文详细介绍了在aarch64架构的嵌入式平台上完成ALSA 1.2.2的完整移植过程,包括alsa-lib和alsa-utils的交叉编译、配置优化以及实用工具链的部署。通过环境准备、交叉编译工具链配置、alsa-lib和alsa-utils的编译与安装、目标系统部署与配置、功能验证与调试技巧等步骤,帮助开发者快速掌握嵌入式音频应用的开发技术。

weixin_33795093的博客 600

alsa-lib库的交叉编译

由于要使用alsa-utils 的 相关指令与 测试代码; 不得不先编译 alsa-lib库

学历只能代表过去,能力代表着现在,而学习代表的是未来。 1346
上一篇: keil软件能识别到JLink或者CMSIS-DAP-依旧无法通过keil下载固件
下一篇: WinRAR的创造者,想看看到底有多少人会刷csdn,哈哈
栈时没有名字
博客等级 码龄5年 289粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值