如何在android 中編譯alsa-utils工具

來源:互聯網
上載者:User

                                                               如何在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.2cto.com

4.3:接下來可能語言到這樣的錯誤:speaker-test.c裡面報wav_file_dir沒有定義,這個值是用來定義你的wav檔案存放在pad中的位置的,你隨便放在哪裡,我定義的路徑 就是在/sdcard目錄下面

經過上面的種種修改,alsa-utils工具終於編譯成功了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.