alsa-lib及alsa-utils成功移植(原…

原创 2013年12月02日 09:12:42

准备工作

alsa-lib版本:alsa-lib-1.0.23.tar.bz2

alsa-util版本:alsa-utils-1.0.23.tar.bz2

其他版本的alsa-lib和alsa-util不能保证正常工作

arm板子:s3c2416

板子上linux内核:2.6.xx

pc虚拟机:arm-linux-gcc:4.4.6

 

首先在Ubuntu上交叉、编译alsa-lib和alsa-util

1.解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录

2.使用命令

./configure --host=arm-jyxtec-linux-gnueabi --prefix=/usr/share/arm-alsa

Tips:--host参数指定了交叉编译器为“arm-jyxtec-linux-gnueabi(根据自己板子上的工具链稳准)",因此必须确保交叉编译器已成功配置(也就是已经导出为全局环境变量,切记!切记!我就在这浪费了很多时间,我的习惯是添加据对路径),且可以在shell里直接调用;--prefix参数指定了alsa-lib的目标安装目录,之后的alsa-util配置也一样

3.使用命令

make

sudo make install

Tips:make install必须加上sudo,因为在install过程中会创建某些目录

4.解压alsa-utils-1.0.23.tar.bz2,进入解压所得目录

5.使用命令

./configure --host=arm-jyxtec-linux-gnueabi --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer --disable-xmlto

Tips:--with-alsa-inc-prefix和--with-alsa-prefix分别指定了交叉编译util应用所需要的alsa-lib的头文件和库文件;--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃

6.使用命令

touch alsaconf/po/t-ja.gmo

注意:根据自己的错误提示来输入命令

如果提示是t-ru.gmo的话,就用命令:touch alsaconf/po/t-ru.gmo

如果提示是t-ja.gmo的话,就用命令:touch alsaconf/po/t-ja.gmo

值得注意的地方是:如果还是报错,那就make clean一下

避免之后make报错

7.使用命令

make

sudo make install

至此Ubuntu上的工作全部结束

 8.到此还不能保证自己移植的是否成功能用,先看一下我们生成的utils是否是交叉环境上的,也就是能在arm上运行的,如何测试呢?很简单,跳到我们生成工具目录下(cd /usr/share/arm-alsa/sbin/)

# cd /usr/share/arm-alsa/bin/

# file aplay

显示 aplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.21, not stripped

注意:这就是我们能在arm上运行的小工具格式,最重要的是看arm那里,那里显示arm说明我们的运行环境是在arm上,这正是我们移植的目的,但是如果显示是 Intel 80386,说明我们没有移植成功,问题就是出在我们交叉工具链设置上。

接着要在2416上部署已交叉编译好的alsa-lib和alsa-util

为便于理解,设2416的根目录为$rootfs

1.将Ubuntu中/usr/share/arm-alsa/下的lib、bin、sbin下的文件cp至2416根文件系统的目录下,使用命令

sudo cp -rfa /usr/share/arm-alsa/lib/*  $rootfs/lib/

sudo cp -rfa /usr/share/arm-alsa/bin/*  $rootfs/sbin/

sudo cp -rfa /usr/share/arm-alsa/sbin/*  $rootfs/sbin/

2.把生成的配置文件copy到文件系统中,要保证绝对路径一致(自己动手建文件夹):

sudo cp -rfa /usr/share/arm-alsa/share/alsa/*  $rootfs/lusr/share/arm-alsa/share/alsa/

 

4.编辑$rootfs/etc/init.d/rcS,添加如下几行

[plain]view plaincopyprint?
  1. #alsa_init  
  2. mkdir /dev/snd  
  3. ln /dev/controlC0 /dev/snd/controlC0  
  4. ln /dev/pcmC0D0c /dev/snd/pcmC0D0c  
  5. ln /dev/pcmC0D0p /dev/snd/pcmC0D0p  
  6. ln /dev/timer /dev/snd/timer  
  7.   
  8. amixer cset numid=86 2  
  9. amixer cset numid=87 2  
Tips:amixer的两句命令,是将amixer的默认设置'Left Capture Source'和'Right Capture Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题

5.编辑$rootfs/etc/profile,添加如下两行

[plain]view plaincopyprint?
  1. #alsa_init  
  2. export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.conf  

 

6、如果开机运行后,你输入

# amixer 
ALSA lib conf.c:3601:(snd_config_update_r) Cannot access file /usr/local/alsa/share/alsa/alsa.conf
ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL default
amixer: Mixer attach default error: No such file or directory

或者和上面的信息类似,那说明我们copy的配置信息据对路径不对,根据提示信息建相应的文件夹,把我们生成相应配置信息cp进去,逐步尝试,(会有好几次错误提示,和上面的作法一样)

知道最后可以成功运行,打工造成,移植成功!~

 

 下篇文章我会根据我的情况总结一下这些小工具的具体使用方法!!

  amixer小工具具体使用方法:http://blog.sina.com.cn/s/blog_7d7e9d0f0101ltg5.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

alsa lib和utils交叉编译与移植

一、PC端使用alsa 1)PC上使用alsa时,正常的安装alsa-lib和alsa-util即可,alsa-lib提供alsa音频程序运行所需要的库,alsa-util主要生成可执行程序,在程序...
  • cean1024
  • cean1024
  • 2016年08月19日 09:46
  • 911

alsa-lib, alsa-utils交叉编译及在嵌入式上使用

下载alsa-lib和alsa-utils www.alsa-project.org/main/index.php/Download 上面是官方的地址,可是alsa-lib总下载不了,于是我在do...
  • luckywang1103
  • luckywang1103
  • 2015年05月10日 21:56
  • 3693

alsa-lib及alsa-utils成功移植(原创)

准备工作 alsa-lib版本:alsa-lib-1.0.23.tar.bz2 alsa-util版本:alsa-utils-1.0.23.tar.bz2 其他版本的alsa-lib和alsa-uti...
  • kfcfk
  • kfcfk
  • 2015年06月07日 15:27
  • 232

移植alsa_lib到ARM210开发板

移植alsa_lib到tiny210开发板
  • u012075739
  • u012075739
  • 2014年08月05日 22:36
  • 783

ALSA语音库移植到OK6410

ALSA语音库移植到OK6410 环境简介: 系   统   ubuntu12.04.1 LTS 单   板:OK6410-A  linux-3.0.1 编译器:gcc version 4.3...
  • yuan6238816
  • yuan6238816
  • 2015年05月25日 15:51
  • 829

ALSA-lib/utils 编译移植 及 问题解决

库和工具版本为: alsa-lib-1.0.27.2 alsa-utils-1.0.27.2 1.首先对压缩文件进行解压; 2.库编译 ./configure --host=arm-none-...
  • chunleigan
  • chunleigan
  • 2014年03月11日 11:04
  • 1671

移植alsa-lib遇到的问题

移植alsa-lib遇到的问题 linux audio    alsa lib    VERSIONED_SYMBOLS 这两天移植alsa lib时遇到了一个问题,被困住了好久。 做个记录,以后再被...
  • njuitjf
  • njuitjf
  • 2014年10月28日 19:15
  • 3687

ALSA lib调用实例

1. Display Some PCM Types and Formats#include int main() { int val; printf("ALSA library vers...
  • mcgrady_tracy
  • mcgrady_tracy
  • 2016年09月22日 10:31
  • 1068

基于S3C2440的Linux-3.6.6移植——声卡移植

 该版本的声卡驱动有缺陷,放音是不正常的,会断断续续,所以还需要修改。主要就是对sound/soc/samsung目录下dma.c文件进行修改。基于网上的资料,我整理如下:   ...
  • zhaocj
  • zhaocj
  • 2014年05月09日 07:12
  • 2339

sqlite3 嵌入式数据库 arm+linux 移植

一直想找个嵌入式数据库来用用,几经辛苦,终于了解到有Berkeley DB和SQLite两种很不错的数据库。在一番衡量之后,决定选用SQLite,毕竟它支持SQL。虽然性能比不上Berkeley DB...
  • u010411897
  • u010411897
  • 2013年08月10日 10:15
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:alsa-lib及alsa-utils成功移植(原…
举报原因:
原因补充:

(最多只允许输入30个字)