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

 我来答
huanglenzhi
2015-01-26 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  最近在看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/include

  LOCAL_SRC_FILES := \
  aplay/aplay.c

  LOCAL_MODULE_TAGS := debug
  LOCAL_MODULE := alsa_aplay
  LOCAL_SHARED_LIBRARIES := \
  libasound \
  libc
  include $(BUILD_EXECUTABLE)

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

  [plain] view plaincopyprint?
  01.#include <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工具终于编译成功了
  
  以上就是我在编译过程中的遇到的问题

  转载
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式