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-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?
- #alsa_init
- mkdir /dev/snd
- ln /dev/controlC0 /dev/snd/controlC0
- ln /dev/pcmC0D0c /dev/snd/pcmC0D0c
- ln /dev/pcmC0D0p /dev/snd/pcmC0D0p
- ln /dev/timer /dev/snd/timer
- amixer cset numid=86 2
- amixer cset numid=87 2
Tips:amixer的两句命令,是将amixer的默认设置'Left Capture Source'和'Right Capture Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题
5.编辑$rootfs/etc/profile,添加如下两行
[plain]view plaincopyprint?
- #alsa_init
- 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及alsa-utils成功移植(转载)的更多相关文章
- ALSA lib编译
http://blog.sina.com.cn/s/blog_7d7e9d0f0101lqlp.html alsa lib: #!bin/sh rm -rf ./output/* mkdir -p ...
- ALSA lib基本概念
1.channel 通道,即我们熟知的声道数.左/右声道,5.1channel等等 2.sample A sample is a single value that describes the amp ...
- 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 ...
- 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲
[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- ALSA lib调用实例
1. Display Some PCM Types and Formats 2. Opening PCM Device and Setting Parameters /* This example o ...
- 成功移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...
- qt5.5.0成功移植到IMX6中
前阵子移植qt4.8.5到板子上成功后,总想着qt4有点旧,于是就想着玩qt5,之前都是在Windows7上写qt,写了个游戏,感觉还不错,但毕竟不能只能在PC机上跑,现在由于项目需要,要将qt搞到I ...
- 编译和链接(lib和dll区别)(转载)
1.头文件并不参加链接和编译.编译器第一步要做的就是简单的把头文件在包含它的源文件中展开.不知你是否能理解这句话.也就是头文件里面有什么内容,通通把它移到包含这个头文件的源文件里.(我觉得这是个很重要 ...
随机推荐
- Swift 进阶 第 4 课 集合类型协议
• Read 序列 一个序列 (sequence) 代表的是一系列具有相同类型 的值,你可以对这些值进行迭代.遍历一个序列最简单的方式是使用 for 循环: 123 for element in so ...
- 最强加密算法?AES加解密算法Matlab和Verilog实现
目录 背景 AES加密的几种模式 基本运算 AES加密原理 Matlab实现 Verilog实现 Testbench 此本文首发于公众号[两猿社],重点讲述了AES加密算法的加密模式和原理,用MATL ...
- 7-1 jmu-python-汇率兑换 (10 分)
7-1 jmu-python-汇率兑换 (10 分) 按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序 输入格式: 输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100 ...
- 用canvas实现简单的下雪效果
首先新建一个html文件,将body的背景设置为天空的那种深蓝色,并创建一个canvas,canvas的操作逻辑都放在snow.js中: <!DOCTYPE html> <head& ...
- JAVA Integer值的范围
原文出处:http://hi.baidu.com/eduask%C9%BD%C8%AA/blog/item/227bf4d81c71ebf538012f53.html package com.test ...
- Rust入坑指南:智能指针
在了解了Rust中的所有权.所有权借用.生命周期这些概念后,相信各位坑友对Rust已经有了比较深刻的认识了,今天又是一个连环坑,我们一起来把智能指针刨出来,一探究竟. 智能指针是Rust中一种特殊的数 ...
- CSS3新单位vw,vh,vmin,vmax详解
1,vw,vh,vmin,vmax是由视窗Viewport大小来决定的,单位1,代表1%,是一种相对单位,只要是为响应式适配视窗的一种解决方案: vw:view width(视窗宽度)的百分比,1vw ...
- git涨姿势(一)
今天遇到了一个git冲突问题,解决冲突方案我是当然知道的,就是本地不知道何时自己傻不拉几的新建了一个relese分支,而remote是没有release分支的,需要拉取的是release/V1.4.2 ...
- 判断某个点是否在某个view上
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObjec ...
- ZXingObjC直接引用第三方工程使用方法
1.下载ZXingObjc压缩包,解压缩. 2.将文件拷贝到项目工程目录下 3.到工程目录中ZXingObjc文件夹中将ZXing的执行文件拖拽到项目中. 4.点击项目targets ——>Bu ...