如何在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

写的内容是:

[plain] view plain copy
  1. ifeq($(strip$(BOARD_USES_ALSA_AUDIO)),true)
  2. LOCAL_PATH:=$(callmy-dir)
  3. #
  4. #Buildaplaycommand
  5. #
  6. include$(CLEAR_VARS)
  7. LOCAL_CFLAGS:=\
  8. -fPIC-D_POSIX_SOURCE\
  9. -DALSA_CONFIG_DIR=\"/system/usr/share/alsa\"\
  10. -DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\"\
  11. -DALSA_DEVICE_DIRECTORY=\"/dev/snd/\"
  12. LOCAL_C_INCLUDES:=\
  13. $(LOCAL_PATH)/include\
  14. $(LOCAL_PATH)/android\
  15. external/alsa-lib/include
  16. LOCAL_SRC_FILES:=\
  17. aplay/aplay.c
  18. LOCAL_MODULE_TAGS:=debug
  19. LOCAL_MODULE:=alsa_aplay
  20. LOCAL_SHARED_LIBRARIES:=\
  21. libasound\
  22. libc
  23. include$(BUILD_EXECUTABLE)
上面我只写了个编译aplay工具的代码,别的工具也是一样的写法

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

[plain] view plain copy
  1. #defineDATADIR"/system/usr/share/alsa"
  2. #definerindexstrrchr
  3. #defineopen64open
  4. #undef__swab16
  5. #define__swab16(x)__arch__swab16((x))
  6. #undef__swab32
  7. #define__swab32(x)__arch__swab32((x))

3、进入第2步中创建的sys目录,在sys目录中创建signal.h头文件,在这个头文件中写如以下内容 [plain] view plain copy
  1. #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

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


转自:http://blog.csdn.net/sunweizhong1024/article/details/8024619


更多相关文章

  1. 如何在Android移植使用最新的ffmpeg
  2. android中的全局变量定义与使用
  3. android adb工具
  4. Android开发手记一 NDK编程实例
  5. android开发笔记之2012版辅助开发工具包(ADT)新功能特性介绍及安装
  6. Android(安卓)NDK r4 windows 环境中的安装
  7. Android(安卓)视频播放器 faplayer 编译
  8. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定
  9. 熟悉Android打包编译的流程

随机推荐

  1. android studio使用fragment标签出错:E/An
  2. Android常用控件及其属性
  3. Android准备工作
  4. J2ME VS Android
  5. android回调函数总结
  6. 使用Android(安卓)Studio+Spring Boot+My
  7. Android开源手机平台揭秘和未来发展
  8. Android(安卓)神兵利器Dagger2使用详解(一
  9. Android源代码获取(Windows)
  10. Android(安卓)OOM-Heap,MAT工具检测内存