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

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,可以查看编译情况具体是哪里有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值