當前位置:首頁 » 編程軟體 » 編譯alsa

編譯alsa

發布時間: 2022-04-22 13:46:19

A. linux alsa可以做什麼

好了言歸正轉。 1.下載驅動你可以到這里下載ALSA的驅動: 你需要下載以下幾個包: alsa-driver-1.0.10.tar.bz2 alsa-lib-1.0.10.tar.bz2 alsa-utils-1.0.10.tar.bz2 2.分別解壓: #tar jxvf alsa-driver-1.0.10.tar.bz2 #tar jxvf alsa-lib-1.0.10.tar.bz2 #tar jxvf alsa-utils-1.0.10.tar.bz2 3.先進入alsa-driver,然後是,alsa-lib,最後是alsa-utils文件夾進行編譯: #./configure#make#make install 最後一步再次進入alsa-driver文件夾運行再編譯請輸入: #./snddevices 等幾分鍾後編譯完成,到此驅動總算安裝完了,但是如果你馬上重啟動的話你的音效卡還是不能工作,why?很簡單你還得修改你的模塊文件/etc/moles.conf #vi /etc/moles.conf並在最後加入以入幾行:

B. 新人求教,編譯一個最簡單的Android程序,提示下面的錯誤咋解決

1、32位系統下的編譯

如果需要在32位系統中編譯android系統,在編譯前需要對部分makefile進行修改

首先修改build/core/main.mk,修改的內容如下所示:

-ifneq (64,$(findstring 64,$(build_arch)))

+ifneq
(i686,$(findstring i686,$(build_arch)))

$(warning
************************************************************) $(warning You are attempting to build on a 32-bit system.)

$(warning Only 64-bit build environments are supported beyond froyo/2.2.)

其次修改如下四個文件:

external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk # This forces a 64-bit build for Java6
-LOCAL_CFLAGS += -m64
-LOCAL_LDFLAGS += -m64
+LOCAL_CFLAGS += -m32
+LOCAL_LDFLAGS += -m32即將LOCAL_CFLAGS和LOCAL_LDFLAGS由-m64改為-m32,從而指定使用32位系統進行編譯如果使用 64bit 的操作系統編譯,這些就都不用修改,但記得需要安裝:For 64-bit servers the following extra packages may be needed:
"sudo apt-get install libc6-dev-i386" (libc6-dev-amd64 if AMD CPU)
"sudo apt-get install g++-multilib lib32ncurses5-dev lib32z1-dev"
還有 jdk64bit 的版本編譯2 、build/core/base_rules.mk:128:*** frameworks/opt/emoji/jni:
.... libgl2jni already defined by framwworks/base/opengl/tests/gl2_jni/jni 停止

從編譯規則上看:
# Make sure that this IS_HOST/CLASS/MODULE combination is unique.
mole_id := MODULE.$(if \
$(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(LOCAL_MODULE)
ifdef $(mole_id)
$(error $(LOCAL_PATH): $(mole_id) already defined by $($(mole_id)))
endif

在framwworks/base/opengl/tests/gl2_jni/下面定義的android.mk定義了:
LOCAL_MODULE := libgl2jni
include $(BUILD_SHARED_LIBRARY)
導致生成的動態庫重復,這是不對的,修改tests這個目錄不參與編譯即可,最直接的辦法刪除掉framwworks/base/opengl/tests/gl2_jni這個文件夾

3、AIDL 編譯報couldn't find import for class原因
「AIDL服務只支持有限的數據類型,因此,如果用AIDL服 務傳遞一些復雜的數據就需要做更一步處理。AIDL服務支持的數據類型如下:
Java的簡單類 型(int、char、boolean等)。不需要導入(import)。String和 CharSequence。不需要導入(import)。
List和 Map。但要注意,List和Map對象的元素類型必須是AIDL服務支持的數據類型。不需要導入(import)。AIDL自動生成 的介面。需要導入(import)。
實現 android.os.Parcelable介面的類。需要導入(import)。
其中後兩種數據類 型需要使用import進行導入,傳遞不需要 import的數據類型的值的方式相同。傳遞一個需要import的數據類型的值(例如,實現android.os.Parcelable 介面的類)的步 驟略顯復雜。除了要建立一個實現android.os.Parcelable介面的類外,還需要為這個類單獨建立一個aidl文件,並使用parcelable關鍵字進行定義。」
沒有加LOCAL_AIDL_INCLUDES += xxx ,所以找不到我的parcelable aidl文件。

修改android源碼根目錄下的build/core/pathmap.mk把你的目錄加進去,此時再make update-api

4、老是提示 @Override錯誤 方法未覆蓋其父類的方法
使 用JDK1.6編譯沒有問題,使用JDK1.5編譯,會報@Override方法未覆蓋其父類的方法。實際上這個方法是類實現的介面中方法,
但是,這個語 法的jdk1.6的下面是可以通過的,也就是說jdk1.6認為類覆蓋父類方法與實現介面方法都叫override,而jdk1.5不
是這樣認為的,不知 道這是當初jdk1.5的bug,還是當初就是認為覆蓋父類方法與實現介面方法是不一樣的,不得而知。但是從
OO角度來看,覆蓋父類方法與實現介面方法都 可以認為override,因為他們目的都是一樣的,都是為了重用,都是多態的一種
表現方式。

更改jdk版本為1.6即可

5、編譯alsa-lib庫錯誤

android系統開發移植alsa-lib庫的過程中編譯的時候出現了如下的錯誤
/tmp/cckyaR40.s: Assembler messages:
/tmp/cckyaR40.s:2763: Error: selected processor does not support `mrs ip,cpsr'
/tmp/cckyaR40.s:2764: Error: unshifted register required -- `orr r2,ip,#128'
/tmp/cckyaR40.s:2765: Error: selected processor does not support `msr cpsr_c,r2
字面的意思報的是匯編錯誤,選擇的處理器不支持mrs和msr指令。
原來的ARM指令有32位和16位兩種指令模式,16位為thumb指令集,thumb指令集編譯出的代碼佔用空間小,
而且效率也高,所以android的arm編譯器默認用的是thumb模式編譯,問題在於alsa的代碼中有部分的內容

C. 3. 如何安裝 ALSA 音效驅動程式

3.1 您需要什麽一套能動的 Linux 系統(如 Slackware 發行套件), 並有安裝開發工具套件(像 gcc, make 等).)支援的音效卡一些Linux 的知識(您總要曉得 "ls", "cd", "tar" 等怎麽用. )root 帳號 如果您有 PnP 卡, 您也需要: isapnptools 軟體套件 在驅程式目錄中的 INSTALL 檔內文提到對有些卡驅動程式內已經能處理 PnP 的支援. 我也從 Jaroslav 那兒得到一樣的論點. 如果我將來得到更多資訊, 我會將它們加進本 mini-HOWTO. (原文是 The INSTALL text in the driver directory suggests that for some cards, PnP support is native. I also received a suggestion from Jaroslav about this. When I get further information about this topic I will add it to this mini-HOWTO. }
請注意如果您想使用 ALSA 驅動程式, 那麽您不應該先載入任何其它音效驅動程式. 如果您的核心中內含音效驅動程式, 那麽有必要重編譯核心. 如果您正在使用舊的 sound.o 模組, 您必須解除它. 如果您使用 kerneld, 這可能就是要您刪去 /lib/moles//misc 目錄下的 sound.o. 新的 RedHat 系統的音效驅動程式組織方式不太一樣, 要載入好幾個模組, 這種情況您需要解除全部的模組. 2.2 版核心對音效則採用了新的方式. 您應該要包含音效的支援! 是的, 沒有說錯, 您在核心中加入了對音效的支援, 但沒有包含任何音效卡的部份. 然後重編譯及安裝核心, 接著編譯 ALSA 驅動程式. 3.2 取得驅動程式ALSA 驅動程式可在 ftp://ftp.alsa-project.org/pub 找到, 並且在 ftp://linux.a2000.nl/alsa 有一份鏡射(mirror). 要安裝 ALSA 的完整功能, 您需要驅動程式, 函式庫及一些公用程式; 也就是說如果您由鏡射站抓您應該 ftp://linux.a2000.nl/alsa/driver/alsa-driver-0.3.0-pre4.tar.gz, ftp://linux.a2000.nl/alsa/lib/alsa-lib-0.3.0pre4.tar.gz, 還有 ftp://linux.a2000.nl/alsa/utils/alsa-utils-0.3.0-pre4.tar.gz. (喔, 上面的不是完整的連結, 您最好到原地點看看有沒有新版, 並抓最新的.) 3.3 解開驅動程式用合理的命令像 tar -zxf 解開驅動程式. 以下的是寫給新手或常忘記的人: (You extract the drivers by some reasonable command, like the all-time tar -zxf . For newbies and for those with amnesia:) cd /usr/src tar -zxf ~/alsa-driver-0.3.0-pre4.tar.gz (如果成功了, 您可能一直使用 root 身份進系統, 這是不對的, 停下來並讀一下 DOS/Win95-to-Linux-HOWTO. 不是這樣的話, 您已經知道這是關於系統管理(administrative)的事, 您需要 superuser/root 許可權. 所以, 您需要 root 許可權, 輸入 su 以及密碼. tar -zxf ~/alsa-lib-0.3.0pre4.tar.gz tar -zxf ~/alsa-utils-0.3.0-pre4.tar.gz 下這樣的命令也可以, 且更有趣: find ~ -name alsa* -exec tar -zxf {} \; (孩子, 不要在家試這個, 這只是個□例而已. )注意如果您使用 Netscape 下載驅動程式, 您可能抓下的是解開過的, 但延伸檔名還是 .tgz. 如果 tar 抱怨檔案格式不對, 把 tar 命令中的 "z" 選項去掉, 可以得到較好的結果. 3.4 編譯在您可以編譯及使用函式庫以前, 您需要先有驅動程式. 而有了函式庫後才可以編譯使用公用程式. 所以我們開始吧: cd alsa-driver-0.3.0-pre4 (給那些不太有經驗的: 在 "alsa-d" 後接著按 ("tab" 鍵). 這樣就會叫出 命令列自動補完(command line completion).) (譯注: 有更好的翻法嗎?) ./configure make 現在您需要用 root 身份安裝東東(可能您已經是 root 了) make install 如果它回應像 "version.h" 檔找不到之類的, 您可能沒有妥善安裝核心原始碼. 要編譯 ALSA 驅動程式需要核心原始碼中的一些檔案, 所以您把想用的 linux-2.x.y.tar.gz 在 /usr/src 下解開, 並下 make menuconfig 命令. (實際上, make symlinks 可能就夠了). 現在編譯函式庫: cd ../alsa-lib-0.3.0-pre4 ./configure make make install OK, 您已經成功了, 再來是公用程式: cd ../alsa-utils-0.3.0-pre4 ./configure make make install 注意: 在第一次編譯公用程式時可先不打 "make install". 甚至您可以先不要動函式庫及公用程式, 只檢查一下確定驅動程式能不能用. 3.5 准備設備檔在驅動程式目錄下有個命令稿(script)可以把 ALSA 的音效設備檔安裝進 /dev 目錄. 在驅動程式目錄下打入 ./snddevices 如此應該有 /dev/snd 子目錄了(先看看有沒有. 如果您甚至連 "ls" 命令都不熟, 請考慮先讀別的 HOWTO. 在安裝本驅動程式前您應該有些基本的 Linux 知識才對.) 現在您可以安插驅動程式了. 請跳到下一段吧.

D. ubuntu 音效卡載入問題 alsa都安裝了 怎麼沒有alsaconf命令

我用的5.04
確實沒有alsaconf
,不過一般機器都可以正確檢測不會出問題。alsa不能用估計是預設安裝的是esd
我的解決辦法是安裝
libesd-alsa0
我還安裝了
alsa-oss
重啟,在首選項-多媒體系統選擇器中選擇ALSA。
(如果要自己編譯alsa程序還要apt
alsa-headers)

E. 如何在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)

上面我只寫了個編譯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頭文件,在這個頭文件中寫如以下內容

[plain] view plainprint?

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工具終於編譯成功了

轉載

F. Linux編譯時報錯fatal error: alsa/asoundlib.h: No such file or directory

你需要自己編譯alsa-lib的arm版本,然後安裝(make install)到預先定義的目標文件夾$prefix。編譯music.c時在編譯選項中加入-I$(prefix)/include -L$(prefix)/lib即可。

G. 如何安裝ALSA驅動

1.下載驅動

你可以到這里下載ALSA的驅動:

你需要下載以下幾個包:
alsa-driver-1.0.10.tar.bz2
alsa-lib-1.0.10.tar.bz2
alsa-utils-1.0.10.tar.bz2

2.分別解壓:

#tar jxvf alsa-driver-1.0.10.tar.bz2
#tar jxvf alsa-lib-1.0.10.tar.bz2
#tar jxvf alsa-utils-1.0.10.tar.bz2

3.先進入alsa-driver,然後是,alsa-lib,最後是alsa-utils文件夾進行編譯:

#./configure
#make
#make install

最後一步再次進入alsa-driver文件夾運行再編譯請輸入:
#./snddevices

等幾分鍾後編譯完成,到此驅動總算安裝完了,但是如果你馬上重啟動的話你的音效卡還是不能工作,why?很簡單你還得修改你的模塊文件/etc/moles.conf
#vi /etc/moles.conf

並在最後加入以入幾行:

#====== added those lines =============
alias char-major-116 snd
options snd major=116 cards_limit=1
#--- Intel 8x0 and SiS 7012 ----------
alias snd-card-0 snd-intel8x0
options snd-intel8x0 index=0 id="ICH"
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
#====

然後保存退出重啟。這就完成了,還不發聲 ?不要緊我也遇到,打開音量控制器,你會發現所有的音量都是0, 接下來就不用我教了吧,調好音量後,先不要關控制器,直接測試音效卡。能聽到聲音嗎?還沒有?那就把電腦砸了。

二、安裝ALSA音效卡驅動程序
1.到http://www.heihei.com/下載下面四個軟體包:
alsa-driver-0.5.9.tar.bz2
alsaconf-0.4.3b.tar.gz
alsa-lib-0.5.9.tar.bz2
alsa-utils-0.5.9.tar.bz2
2.先安裝alsa-driver-0.5.9.tar.bz2這個文件:
(1)cp alsa-driver-0.5.9.tar.bz2 /tmp
將alsa-driver-0.5.9.tar.bz2 拷到/tmp目錄下。
(2)bunzip2 alsa-driver-0.5.9.tar.bz2
壓縮這個文件,會在/tmp目錄下生成一個文件叫做alsa-driver-0.5.9.tar。
(3)tar xvf alsa-driver-0.5.9.tar
將會在/tmp目錄下產生一個子目錄叫做alsa-driver-0.5.9,alsa的所有文件就存放在這個目錄下。
(4)cd alsa-driver-0.5.9
進入alsa的驅動程序所存放的目錄,准備配置和編譯它。這時你可以看一下目錄下的INSTALL文件來了解安裝的步驟和注意事項。
(5)依次運行下面三個命令:
./configure
make install
./snddevices
3.編輯/etc/ moles.conf文件
這個文件的配置雖然比較麻煩,但用alsaconf-0.4.3b.tar.gz也可以配好它,運行命令:
(1)cp alsaconf-0.4.3b.tar.gz /tmp
將alsaconf-0.4.3b.tar.gz 拷到/tmp目錄下。
(2)tar zxvf alsaconf-0.4.3b.tar.gz
解壓縮這個文件,會在/tmp目錄下生成一個子目錄叫做alsaconf-0.4.3b。
(3)./alsaconf
會出現一個窗口叫你選擇音效卡,像SoundBlaster及ESS1868、S3_SonicVibes_PCI、Ensoniq_AudioPCI_ES1370 1371等,很多目前的kernel還不支持的音效卡它都可以支持了。
選好音效卡之後系統會問你一些問題,都回答OK,然後會回到第一個畫面問你要不要繼續設第二張音效卡,選「No_more_cards」退出即可。完成這個步驟之後,/etc/moles.conf這個文件就基本上自動配置好了,重新啟動電腦後音效卡就可以發聲了。
4.如果還不行,那麼你就還需要安裝alsa-lib和alsa-utils,安裝方法和alsa-driver一樣,注意要先安裝alsa-lib,再安裝alsa-utils。將文件拷到/tmp目錄,解壓縮,然後運行命令make和make install,具體請參照上面alsa-driver的安裝步驟。
安裝後到alsa-utils(解開alsa-utils-0.5.9.tar.bz2會產生該目錄)目錄下的alsamixer子目錄執行
./alsamixer
好了,你的音效卡應該能發聲了。

H. Y450,ubuntu10.10,編譯音效卡(ALC269)驅動(alsa)之後無聲音,aplay -l提示無音效卡,lspci -v命令找到顯卡

如果沒有編譯經驗最好不好自己搞。ubuntu默認的驅動都是和系統匹配的,而你自己搞得就很有可能不匹配ubuntu的聲音系統。

I. ALSA 編譯問題~我用這個snd_pcm_close(handle)關閉音效卡後,再打開音效卡用於回放,可是實際上沒有關閉

你是怎麼做的 是錄製成文件還是存在buf里? playback的handle與record的handle需要設成兩個 他倆不是公用的 open的時候可以一起打開 都需要初始化,如果你只初始化了record沒初始化playback當然沒有聲音

熱點內容
密碼相機多少錢一台 發布:2025-04-04 05:11:16 瀏覽:323
linux網路不通 發布:2025-04-04 05:08:46 瀏覽:335
更新r星伺服器電腦壞了 發布:2025-04-04 04:59:08 瀏覽:689
伺服器搭建需要多久 發布:2025-04-04 04:51:35 瀏覽:674
雲電腦伺服器異常 發布:2025-04-04 04:50:01 瀏覽:810
源碼交易程序 發布:2025-04-04 04:40:35 瀏覽:238
安卓信息存儲 發布:2025-04-04 04:39:13 瀏覽:114
安卓app的音樂放在哪個文件夾 發布:2025-04-04 04:28:49 瀏覽:808
phpcookie清除 發布:2025-04-04 04:27:54 瀏覽:875
壓縮棒 發布:2025-04-04 04:25:56 瀏覽:17