• 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:~#
    View Code

     

     

     

     

     

     

     

  • 相关阅读:
    干掉你的老板(小游戏)
    SEO优化数据系列表(图)
    javascript动态加载三
    javascript动态加载二
    截屏
    vimdiff
    pscp scp ftp samba windows send files to linux
    login windows 10 with passwd instead of pin
    modify requirements.txt
    整片注释 ,shell
  • 原文地址:https://www.cnblogs.com/jiuzhen/p/12941014.html
Copyright © 2020-2023  润新知