如何在android 中编译alsa-utils工具


最近在看ALSA 的driver,尝试了在android 中编译alsa-utils工具,下面讲述下,我是如何进行编译以及过程中遇到的问题如何解决的:

首先我从ALSA 官方网上下载了alsa-utils-1.0.23版本的工具,因为我android 的alsa-lib 也是1.023版本的,防止版本不一样出现问题,我就选择了版本一样,我们的alsa-lib放的路径是在android_source/external/alsa-lib目录下面,我们下载的alsa-utils-1.023工具包也下载放在里面。

接下来我们需要完成以下几个动作:

1、在alsa-utils下面创建一个Android.mk

写的内容是:

ifeq ($(strip $(BOARD_USES_ALSA_AUDIO)),true)LOCAL_PATH:= $(call my-dir)## Build aplay command#include $(CLEAR_VARS)LOCAL_CFLAGS := \        -fPIC -D_POSIX_SOURCE \        -DALSA_CONFIG_DIR=\"/system/usr/share/alsa\" \        -DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\" \        -DALSA_DEVICE_DIRECTORY=\"/dev/snd/\"LOCAL_C_INCLUDES:= \        $(LOCAL_PATH)/include \        $(LOCAL_PATH)/android \        external/alsa-lib/includeLOCAL_SRC_FILES := \        aplay/aplay.cLOCAL_MODULE_TAGS := debugLOCAL_MODULE := alsa_aplayLOCAL_SHARED_LIBRARIES := \        libasound \        libcinclude $(BUILD_EXECUTABLE)
上面我只写了个编译aplay工具的代码,别的工具也是一样的写法

2、接下来进入alsa-utils工具包里面进行创建sys目录和aconfig.h文件,在aconfig.h文件里面编写以下内容

#define DATADIR "/system/usr/share/alsa"#define rindex strrchr#define open64 open#undef __swab16#define __swab16(x)  __arch__swab16((x))#undef __swab32#define __swab32(x)  __arch__swab32((x))

3、进入第2步中创建的sys目录,在sys目录中创建signal.h头文件,在这个头文件中写如以下内容

#include <signal.h>
4、接下来你直接编译android 就可以了,在编译过程中可能出现以下 错误“

4.1:kernel/common/linux/un.h:18: error: expected specifier-qualifier-list before 'sa_family_t

那是因为我们在alsa-utils/alsactl/init_parse.c里面在include un.h之前没有#include <sys/socket.h>,你只要在这之前include这个头文件就解决了

4.2:还有可能遇到这个错误:在aplay.c里面会提示报错'S_IRGRP' undeclared (first use in this function,你只要在在aplay.c里面添加一个头文件:#include <sys/stat.h>,这样就解决了

4.3:接下来可能语言到这样的错误:speaker-test.c里面报wav_file_dir没有定义,这个值是用来定义你的wav文件存放在pad中的位置的,你随便放在哪里,我定义的路径 就是在/sdcard目录下面

经过上面的种种修改,alsa-utils工具终于编译成功了

在编译过程中,有个网址还是值得去浏览的:http://gitorious.org/rowboat/external-alsa-utils/trees/master

以上就是我在编译过程中的遇到的问题

更多相关文章

  1. android高版本系统源码下载和编译刷机
  2. Android工具之Hierarchy Viewer--分析应用程序UI布局
  3. 在Android Studio更改现有项目里的SDK版本
  4. 在4.0以上系统中应用出现2.3版本的系统UI
  5. Android中NDK各版本下载
  6. Android获取apk的版本及包名等信息
  7. 解决android sdk中找不到tools目录Android sdkmanager tool not

随机推荐

  1. LINQ之开放式并发控制和事务
  2. MySQL查询过程中出现lost connection to
  3. 求指导,PB12.0 如何用ini文件 连接sql 200
  4. MySQL Cluster在线添加数据节点
  5. Windows安装MySQL Community 5.7.17(非msi
  6. 如何在SQL server中创建excel表并导出
  7. 数据库问题java.sql.SQLException: Colum
  8. Django学习之mysql增删改查
  9. 解决mysql sum求和返回null问题或IFNULL
  10. mysql 忽略主键冲突、避免重复插入的几种