ALSA:Linux下声卡编程
1.ALSA:Linux下声卡编程【正常操作,一次性就ok的】
先安装库文件(需要联网下载500k)
apt-get install libasound2-dev
(centos 需换一个包:yum install alsa-lib-devel)
若提示资源暂时不可用,执行语句
ps aux | grep “apt-get”,查询进程号,根据进程号kill该进程,再安装(如还不行,先更新包,再重做:apt-get update)
(2)编译(jd.wav文件和play.c都放到/root下)
gcc –o play play.c –lasound
执行时也需要添加播放路径和文件名
./play jd.wav
2.自己的操作步骤:
1.先将c文件和wav文件放到root文件下
切换root模式
cd /root
ls
就可以查看root目录下的文件了。
再安装,apt-get install libasound2-dev
你若是不安装则会,【当然粗心命令也写欠了-lasound,但结果一样的啦】
尝试按提示的版本来
尝试sudo apt -get update,失败
尝试修复安装,sudo apt-get -f install ,但是对于我来说没用。
apt-cache madison package-name搜索软件有那些可用版本
尝试,apt-cache madison libasound2-dev
信息没用。。。
再尝试下载,依旧失败
接着,上面的报错解决方法,借鉴https://blog.csdn.net/u011170540/article/details/83693568
2.降级!【可以直接跳到这里,前面都是试错】
找不到命令就下载
sudo aptitude install libasound2-dev
然后就OK啦
接着,完成安装就进行编译
gcc -o play play.c -lasound
./play jd.wav
编译时忘记写-lasound会报错的,注意踩坑!
主要是, libasound2-dev : 依赖: libasound2 (= 1.1.3-5) E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 刚刚好时同一个软件,故只能降级处理 所以,若是这个原因就直接跳过前面的步骤,直接来到“降级”这一步,节约时间!!! |
shell代码写着,
1 ac@ac-virtual-machine:~$ sudo su 2 [sudo] ac 的密码: 3 root@ac-virtual-machine:/home/ac# cp play.c /root 4 root@ac-virtual-machine:/home/ac# cp jd.wav /root 5 root@ac-virtual-machine:/home/ac# apt-get install libasound2-dev 6 正在读取软件包列表... 完成 7 正在分析软件包的依赖关系树 8 正在读取状态信息... 完成 9 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 10 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 11 包尚未被创建或是它们已被从新到(Incoming)目录移出。 12 下列信息可能会对解决问题有所帮助: 13 14 下列软件包有未满足的依赖关系: 15 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 16 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 17 root@ac-virtual-machine:/home/ac# cd .. 18 root@ac-virtual-machine:/home# cd .. 19 root@ac-virtual-machine:/# ls 20 bin dev initrd.img lib64 mnt root snap tmp vmlinuz 21 boot etc initrd.img.old lost+found opt run srv usr 22 cdrom home lib media proc sbin sys var 23 root@ac-virtual-machine:/# cd root 24 root@ac-virtual-machine:~# ls 25 jd.wav play.c 26 root@ac-virtual-machine:~# gcc -o play play.c 27 play.c:4:10: fatal error: alsa/asoundlib.h: 没有那个文件或目录 28 #include <alsa/asoundlib.h> 29 ^~~~~~~~~~~~~~~~~~ 30 compilation terminated. 31 root@ac-virtual-machine:~# sudo apt-get update 32 命中:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 33 命中:2 http://cn.archive.ubuntu.com/ubuntu bionic InRelease 34 正在读取软件包列表... 完成 35 root@ac-virtual-machine:~# apt-get install libasound2-dev 36 正在读取软件包列表... 完成 37 正在分析软件包的依赖关系树 38 正在读取状态信息... 完成 39 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 40 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 41 包尚未被创建或是它们已被从新到(Incoming)目录移出。 42 下列信息可能会对解决问题有所帮助: 43 44 下列软件包有未满足的依赖关系: 45 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 46 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 47 root@ac-virtual-machine:~# sudo apt-get update 48 命中:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 49 命中:2 http://cn.archive.ubuntu.com/ubuntu bionic InRelease 50 正在读取软件包列表... 完成 51 root@ac-virtual-machine:~# apt-get install libasound2-dev 52 正在读取软件包列表... 完成 53 正在分析软件包的依赖关系树 54 正在读取状态信息... 完成 55 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 56 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 57 包尚未被创建或是它们已被从新到(Incoming)目录移出。 58 下列信息可能会对解决问题有所帮助: 59 60 下列软件包有未满足的依赖关系: 61 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 62 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 63 root@ac-virtual-machine:~# sudo apt-get update 64 获取:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] 65 获取:2 http://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [40.7 kB] 66 获取:3 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 DEP-11 Metadata [42.1 kB] 67 获取:4 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 DEP-11 Metadata [2,464 B] 68 命中:5 http://cn.archive.ubuntu.com/ubuntu bionic InRelease 69 已下载 174 kB,耗时 10秒 (17.2 kB/s) 70 71 正在读取软件包列表... 完成 72 root@ac-virtual-machine:~# 73 root@ac-virtual-machine:~# apt-get install libasound2-dev 74 正在读取软件包列表... 完成 75 正在分析软件包的依赖关系树 76 正在读取状态信息... 完成 77 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 78 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 79 包尚未被创建或是它们已被从新到(Incoming)目录移出。 80 下列信息可能会对解决问题有所帮助: 81 82 下列软件包有未满足的依赖关系: 83 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 84 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 85 root@ac-virtual-machine:~# sudo aptitude install libasound2-dev 86 sudo: aptitude:找不到命令 87 root@ac-virtual-machine:~# sudo apt-get -f install 88 正在读取软件包列表... 完成 89 正在分析软件包的依赖关系树 90 正在读取状态信息... 完成 91 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 369 个软件包未被升级。 92 root@ac-virtual-machine:~# sudo aptitude install libasound2-dev 93 sudo: aptitude:找不到命令 94 root@ac-virtual-machine:~# apt-get install libasound2-dev 95 正在读取软件包列表... 完成 96 正在分析软件包的依赖关系树 97 正在读取状态信息... 完成 98 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 99 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 100 包尚未被创建或是它们已被从新到(Incoming)目录移出。 101 下列信息可能会对解决问题有所帮助: 102 103 下列软件包有未满足的依赖关系: 104 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 105 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 106 root@ac-virtual-machine:~# sudo apt-get -f install 107 正在读取软件包列表... 完成 108 正在分析软件包的依赖关系树 109 正在读取状态信息... 完成 110 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 369 个软件包未被升级。 111 root@ac-virtual-machine:~# apt-get install libasound2-dev (=1.1.3-5) 112 bash: 未预期的符号 `(' 附近有语法错误 113 root@ac-virtual-machine:~# apt-get install libasound2=1.1.3-5 114 正在读取软件包列表... 完成 115 正在分析软件包的依赖关系树 116 正在读取状态信息... 完成 117 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 118 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 119 包尚未被创建或是它们已被从新到(Incoming)目录移出。 120 下列信息可能会对解决问题有所帮助: 121 122 下列软件包有未满足的依赖关系: 123 libasound2 : 依赖: libasound2-data (>= 1.1.3-5) 但是它将不会被安装 124 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 125 root@ac-virtual-machine:~# sudo apt-get install libasound2 126 正在读取软件包列表... 完成 127 正在分析软件包的依赖关系树 128 正在读取状态信息... 完成 129 libasound2 已经是最新版 (1.1.3-5ubuntu0.1)。 130 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 369 个软件包未被升级。 131 root@ac-virtual-machine:~# apt-get install libasound2=1.1.3-5 132 正在读取软件包列表... 完成 133 正在分析软件包的依赖关系树 134 正在读取状态信息... 完成 135 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 136 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 137 包尚未被创建或是它们已被从新到(Incoming)目录移出。 138 下列信息可能会对解决问题有所帮助: 139 140 下列软件包有未满足的依赖关系: 141 libasound2 : 依赖: libasound2-data (>= 1.1.3-5) 但是它将不会被安装 142 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 143 root@ac-virtual-machine:~# apt-get install libasound2-dev 144 正在读取软件包列表... 完成 145 正在分析软件包的依赖关系树 146 正在读取状态信息... 完成 147 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 148 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 149 包尚未被创建或是它们已被从新到(Incoming)目录移出。 150 下列信息可能会对解决问题有所帮助: 151 152 下列软件包有未满足的依赖关系: 153 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 154 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 155 root@ac-virtual-machine:~# apt-cache madison libasound2-dev 156 libasound2-dev | 1.1.3-5 | http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 Packages 157 root@ac-virtual-machine:~# apt-get install libasound2-dev 158 正在读取软件包列表... 完成 159 正在分析软件包的依赖关系树 160 正在读取状态信息... 完成 161 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 162 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 163 包尚未被创建或是它们已被从新到(Incoming)目录移出。 164 下列信息可能会对解决问题有所帮助: 165 166 下列软件包有未满足的依赖关系: 167 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) 168 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 169 root@ac-virtual-machine:~# sudo aptitude install libasound2-dev 170 sudo: aptitude:找不到命令 171 root@ac-virtual-machine:~# apt-get install aptitude 172 正在读取软件包列表... 完成 173 正在分析软件包的依赖关系树 174 正在读取状态信息... 完成 175 将会同时安装下列软件: 176 aptitude-common libcwidget3v5 libsigc++-2.0-0v5 177 建议安装: 178 aptitude-doc-en | aptitude-doc apt-xapian-index debtags tasksel 179 libcwidget-dev 180 下列【新】软件包将被安装: 181 aptitude aptitude-common libcwidget3v5 libsigc++-2.0-0v5 182 升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 365 个软件包未被升级。 183 需要下载 2,580 kB 的归档。 184 解压缩后会消耗 10.9 MB 的额外空间。 185 您希望继续执行吗? [Y/n] Y 186 获取:1 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 aptitude-common all 0.8.10-6ubuntu1 [1,014 kB] 187 获取:2 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 libsigc++-2.0-0v5 amd64 2.10.0-2 [10.9 kB] 188 获取:3 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 libcwidget3v5 amd64 0.5.17-7 [286 kB] 189 获取:4 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 aptitude amd64 0.8.10-6ubuntu1 [1,269 kB] 190 已下载 2,580 kB,耗时 60秒 (43.2 kB/s) 191 正在选中未选择的软件包 aptitude-common。 192 (正在读取数据库 ... 系统当前共安装有 120154 个文件和目录。) 193 正准备解包 .../aptitude-common_0.8.10-6ubuntu1_all.deb ... 194 正在解包 aptitude-common (0.8.10-6ubuntu1) ... 195 正在选中未选择的软件包 libsigc++-2.0-0v5:amd64。 196 正准备解包 .../libsigc++-2.0-0v5_2.10.0-2_amd64.deb ... 197 正在解包 libsigc++-2.0-0v5:amd64 (2.10.0-2) ... 198 正在选中未选择的软件包 libcwidget3v5:amd64。 199 正准备解包 .../libcwidget3v5_0.5.17-7_amd64.deb ... 200 正在解包 libcwidget3v5:amd64 (0.5.17-7) ... 201 正在选中未选择的软件包 aptitude。 202 正准备解包 .../aptitude_0.8.10-6ubuntu1_amd64.deb ... 203 正在解包 aptitude (0.8.10-6ubuntu1) ... 204 正在设置 aptitude-common (0.8.10-6ubuntu1) ... 205 正在处理用于 libc-bin (2.27-3ubuntu1) 的触发器 ... 206 正在处理用于 man-db (2.8.3-2) 的触发器 ... 207 正在设置 libsigc++-2.0-0v5:amd64 (2.10.0-2) ... 208 正在设置 libcwidget3v5:amd64 (0.5.17-7) ... 209 正在设置 aptitude (0.8.10-6ubuntu1) ... 210 update-alternatives: 使用 /usr/bin/aptitude-curses 来在自动模式中提供 /usr/bin/aptitude (aptitude) 211 正在处理用于 libc-bin (2.27-3ubuntu1) 的触发器 ... 212 root@ac-virtual-machine:~# sudo aptitude install libasound2-dev 213 下列“新”软件包将被安装。 214 libasound2-dev{b} 215 0 个软件包被升级,新安装 1 个, 0 个将被删除, 同时 365 个将不升级。 216 需要获取 123 kB 的存档。 解包后将要使用 664 kB。 217 下列软件包存在未满足的依赖关系: 218 libasound2-dev : 依赖: libasound2 (= 1.1.3-5) but 1.1.3-5ubuntu0.1 is installed 219 下列动作将解决这些依赖关系: 220 221 保持 下列软件包于其当前版本: 222 1) libasound2-dev [未安装的] 223 224 225 226 是否接受该解决方案?[Y/n/q/?] n 227 下列动作将解决这些依赖关系: 228 229 降级 下列软件包: 230 1) libasound2 [1.1.3-5ubuntu0.1 (now) -> 1.1.3-5 (bionic)] 231 2) libasound2-data [1.1.3-5ubuntu0.1 (now) -> 1.1.3-5 (bionic)] 232 233 234 235 是否接受该解决方案?[Y/n/q/?] Y 236 下列软件包将被“降级”: 237 libasound2 libasound2-data 238 下列“新”软件包将被安装。 239 libasound2-dev 240 0 个软件包被升级,新安装 1 个, 2 个被降级, 0 个将被删除, 同时 365 个将不升级。 241 需要获取 516 kB 的存档。 解包后将要使用 667 kB。 242 您要继续吗?[Y/n/?] Y 243 读取: 1 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 libasound2 amd64 1.1.3-5 [357 kB] 244 读取: 2 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 libasound2-data all 1.1.3-5 [36.1 kB] 245 读取: 3 http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 libasound2-dev amd64 1.1.3-5 [123 kB] 246 已下载 516 kB,耗时 33秒 (15.5 kB/s) 247 dpkg: 警告: 即将把 libasound2:amd64 从 1.1.3-5ubuntu0.1 降级到 1.1.3-5 248 (正在读取数据库 ... 系统当前共安装有 120293 个文件和目录。) 249 正准备解包 .../libasound2_1.1.3-5_amd64.deb ... 250 正在将 libasound2:amd64 (1.1.3-5) 解包到 (1.1.3-5ubuntu0.1) 上 ... 251 dpkg: 警告: 即将把 libasound2-data 从 1.1.3-5ubuntu0.1 降级到 1.1.3-5 252 正准备解包 .../libasound2-data_1.1.3-5_all.deb ... 253 正在将 libasound2-data (1.1.3-5) 解包到 (1.1.3-5ubuntu0.1) 上 ... 254 正在选中未选择的软件包 libasound2-dev:amd64。 255 正准备解包 .../libasound2-dev_1.1.3-5_amd64.deb ... 256 正在解包 libasound2-dev:amd64 (1.1.3-5) ... 257 正在设置 libasound2-data (1.1.3-5) ... 258 正在设置 libasound2:amd64 (1.1.3-5) ... 259 正在处理用于 libc-bin (2.27-3ubuntu1) 的触发器 ... 260 正在设置 libasound2-dev:amd64 (1.1.3-5) ... 261 262 root@ac-virtual-machine:~# gcc -o play play.c 263 /tmp/cceFEA9O.o:在函数‘set_pcm_play’中: 264 play.c:(.text+0x1ad):对‘snd_pcm_open’未定义的引用 265 play.c:(.text+0x1d7):对‘snd_pcm_hw_params_sizeof’未定义的引用 266 play.c:(.text+0x216):对‘snd_pcm_hw_params_sizeof’未定义的引用 267 play.c:(.text+0x265):对‘snd_pcm_hw_params_any’未定义的引用 268 play.c:(.text+0x2a8):对‘snd_pcm_hw_params_set_access’未定义的引用 269 play.c:(.text+0x30b):对‘snd_pcm_hw_params_set_format’未定义的引用 270 play.c:(.text+0x32b):对‘snd_pcm_hw_params_set_format’未定义的引用 271 play.c:(.text+0x34b):对‘snd_pcm_hw_params_set_format’未定义的引用 272 play.c:(.text+0x36b):对‘snd_pcm_hw_params_set_channels’未定义的引用 273 play.c:(.text+0x3c0):对‘snd_pcm_hw_params_set_rate_near’未定义的引用 274 play.c:(.text+0x3fe):对‘snd_pcm_hw_params’未定义的引用 275 play.c:(.text+0x440):对‘snd_pcm_hw_params_get_period_size’未定义的引用 276 play.c:(.text+0x50f):对‘snd_pcm_drain’未定义的引用 277 play.c:(.text+0x51e):对‘snd_pcm_close’未定义的引用 278 play.c:(.text+0x589):对‘snd_pcm_prepare’未定义的引用 279 play.c:(.text+0x5a1):对‘snd_strerror’未定义的引用 280 play.c:(.text+0x5d9):对‘snd_pcm_writei’未定义的引用 281 collect2: error: ld returned 1 exit status 282 root@ac-virtual-machine:~# apt-get install libasound2-dev 283 正在读取软件包列表... 完成 284 正在分析软件包的依赖关系树 285 正在读取状态信息... 完成 286 libasound2-dev 已经是最新版 (1.1.3-5)。 287 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 365 个软件包未被升级。 288 root@ac-virtual-machine:~# gcc -o play play.c -lasound 289 root@ac-virtual-machine:~# ./play jd.wav 290 nread=44 291 文件大小rLen:485896 292 声道数:1 293 采样频率:8000 294 采样的位数:8 295 wSampleLength=485860 296 歌曲写入结束 297 root@ac-virtual-machine:~#