ubuntu11.10下madplay移植出现audio: /dev/dsp: No such file or directory

这两天想用C++写个小程序,通过调用程序播放MP3音乐文件,当然被调用的程序非madplay了,可是但编译好后,如运行:./madplay  chenyu.mp3 按理说,这是可以播放的,可是,却出现了 在/dev/dsp No such file or directory,原来ubuntu自带的内核里没有声卡的支持,只好把它的内核从新编译了,我在网上发现了一个很好的教程,现在引用到此,以便日后查用,也为了方便大家的学习,在此向作者表示崇拜。


当然,这个过程中可能会出现一些问题,如果是在虚拟机里做的话,为了不破坏你的原有系统,我还是建议你把当前的系统做个备份,怎么样备份我就不说了,可以看虚拟机的使用。


Ubuntu 11.10的 内核版本是3.0.0.可以使用命令 uname -r 查看下。


1,安装所需软件包
sudo apt-get install kernel-wedge kernel-package libncurses5-dev

在这里我注释一下:红色的那个是为了执行make menuconfig 所要用到的


2,运行命令
sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r)



3,创建源目录
mkdir ~/src
cd ~/src


4,下载内核源码
apt-get source linux-image-$(uname -r)



5,配置内核
cd linux-3.0.0
make menuconfig

在这里你可以配置内核,你可以对它进行裁剪,我这里是要让其支持声卡,应该这样选:

 Device Drivers  --->  
 <*> Sound card support  --->  
<*>   Advanced Linux Sound Architecture  ---> 
  <*>   OSS Mixer API                                              
          <*>   OSS PCM (digital audio) API                                  
    [*]     OSS PCM (digital audio) API - Include plugin system     


注释:在这里讲一下,什么是OSS,OSS就是OSS(Open Sound System,开放声音系统)的简称,现在ubuntu用的还是OSS  (我之前用的是红帽的企业版5,那里面不用这个,用的是ALSA)

还有就是,声卡中主要有两个基本装置:Mixer和CODEC(ADC/DAC)。Mixer用来控制输入音量的大小,对应的设备文件为/dev/mixer;CODEC用来实现录音(模拟信号转变为数字信号)和播放声音(数字信号转变为模拟信号)的功能,对应的设备文件为/dev/dsp。


6,加速构建
export CONCURRENCY_LEVEL=3
提示,通常是CONCURRENCY_LEVEL=处理器数目+1



7,若是原先编译过内核,现在清理下temp文件夹
make-kpkg clean



8,编译内核
time fakeroot make-kpkg --initrd --append-to-version=-chenyu kernel-image kernel-headers
提示,这里-chenyu,可以修改成你自己喜欢的名称


9,安装内核
cd ~/src
sudo dpkg -i linux-image-3.0.0.30-chenyu_3.0.0.30-chenyu-10.00.Custom_amd64.deb
sudo dpkg -i linux-headers-3.0.0.30-chenyu_3.0.0.30-chenyu-10.00.Custom_amd64.deb



10,重启下,看看是否成功,


后记。经过上述步骤后,在~/src目录下就有了一个linux-3.0.0,以后你要是还要加入什么模块,直接对他进行裁剪就可以了,不过,在make menuconfig 之前要加 sudo,不然是无法执行的,会报错的。


你可能感兴趣的:(linux,内核)