编译alsa相关库,在android4.1下应用。

本文详细介绍了如何在Android 4.1系统下编译libalsa、libmad和alsa-utils。首先,通过一个名为env-codesoucery.sh的脚本设置编译环境,包括设置CODESOUCERY工具路径、glibc和NDK的路径。然后,分别使用libalsa.sh、alsa-utils.sh和libmad.sh脚本来编译这三个库,每个脚本中包含了编译和配置所需的参数。在编译过程中,作者遇到了各种问题,如库路径设置、编译选项错误等,并给出了相应的解决方案。最后,文章提到了在Android设备上测试编译成果的方法,以及对音频播放和录音的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要编译的有libalsa, libmad, utils alsa.sh. 不多解释了,直接给脚本吧。

首先是编译环境的设置,用一个脚本env-codesoucery.sh来用它。需要的东西有CODESOUCERY编译工具(android自已的和GNU linux有点差别,要改源码,这里不用它)。glibc这与根文件系统有点类似,是gun linux的标准库,codesoucery自已也带有,但更新的慢。android NDK的包,基本没用,下了做出错时文件对比用。 

#!/bin/bash
export PATH=$PATH:/media/ququ/android/other-android/arm-2014.05/bin/#这是设置CODESOUCERY的linux 工具目录。

PROJECT_BASE=$(pwd);
#PROJECT_BASE=/media/ququ/android/other-android/project/alsaplay/
REPOSITORY=$PROJECT_BASE/download
ROOTFS=$PROJECT_BASE/compiled/rootfs

#这个需要生成编译的目录结构。在当前目录下生成build, compiled, download三个目录

#comiled 下生成rootfs目录
## edit this
export SYSROOT_ANDROID="/media/ququ/android/other-android/android-ndk-r10e/platforms/android-16/arch-arm/usr"
export SYSROOT_CODESOUCERY="/media/ququ/android/other-android/arm-2014.05/arm-none-linux-gnueabi/libc"
export SYSROOT_GLIBC="/media/ququ/android/other-android/project/glibc"

##依自已解包三个工具的情况改上需三个目录变量
export CC="arm-none-linux-gnueabi-gcc"
export CXX="arm-none-linux-gnueabi-g++"
export RANLIB="arm-none-linux-gnueabi-ranlib"
export STRIP='arm-none-linux-gnueabi-strip'
export LD='arm-none-linux-gnueabi-ld'
export AR='arm-none-linux-gnueabi-ar'
export HOST="arm-none-linux-gnueabi"
export CPPFLAGS="-I${ROOTFS}/include"
export LDFLAGS="-L${ROOFTS}/lib"

这里是libalsa.sh脚本

#/bin/bash
source env-codesoucery.sh
ME=alsa-lib-1.1.6

#cd $REPOSITORY && wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.6.tar.bz2
cd $PROJECT_BASE/build && tar -xvf $REPOSITORY/$ME.tar.bz2 #&& cd ./$ME
cd $PROJECT_BASE/build/$ME

CC="arm-none-linux-gnueabi-gcc --sysroot=$SYSROOT_GLIBC" \
CXX="arm-none-linux-gnueabi-g++ --sysroot=$SYSROOT_GLIBC" \
CPPFLAGS="-I$ROOTFS/include -I$SYSROOT_CODESOUCERY/usr/include" \
#CPPFLAGS="-I$ROOTFS/include" \
#LDFLAGS="-L$ROOTFS/lib -L$SYSROOT_ANDROID/lib --static" \
LDFLAGS="-L$ROOTFS/lib -L$SYSROOT_GLIBC/lib --static" \

./configure \
--prefix="$ROOTFS" \
--enable-static \
--disable-shared \
--with-configdir=/usr/local/share \
--host=$HOST

make 
#make install

#下面的作法是因为要生成一些.conf的文件,需要系统信息,不知为何它需要root权限。因为要生成lib这个安装还是必需的。

#实际上这些.conf配置不要的话,只是在命令或代码中把硬件的相关能数写全,写对就好。
#在目录下
#su
#export PATH=$PATH:/media/ququ/android/other-android/arm-2014.05/bin/
#make install

 

这里是alsa-utils.sh脚本

#/bin/bash
source env-codesoucery.sh
ME=alsa-utils-1.1.6

#cd $REPOSITORY && wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.1.6.tar.bz2
cd $PROJECT_BASE/build && tar -xvf $REPOSITORY/$ME.tar.bz2 #&& cd ./$ME
cd $PROJECT_BASE/build/$ME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值