当前位置:操作系统 > 安卓/Android >>

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

                                                               如何在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]
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) 
上面我只写了个编译aplay工具的代码,别的工具也是一样的写法
2、接下来进入alsa-utils工具包里面进行创建sys目录和aconfig.h文件,在aconfig.h文件里面编写以下内容

[plain]
#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头文件,在这个头文件中写如以下内容
[plain] 
#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>,这样就解决了 www.zzzyk.com

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

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

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,