首页 > 解决方案 > gcc 中是否有一个编译标志来克服“错误:无效的存储类”?

问题描述

我正在做我自己的 alsa 项目。

从更改操作系统(全新安装/未升级)

PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux" 
VERSION_ID="7" 
VERSION="7 (wheezy)"
ID=raspbian 
ID_LIKE=debian

4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian

4.14.93-v7+ #1191 SMP Wed Jan 16 11:53:33 GMT 2019 armv7l GNU/Linux

我另外下载/安装了

alsa-lib-1.1.8.tar.bz2

没有任何错误!

中间没有触及项目——所有 alsa 源代码在 wheezy 之前都编译得很好!!!

在拉伸下使用相同的“Makefile”,当再次使用 alsa 库/源(包含在 /usr/include/alsa 中)编译项目时,我现在面临以下“无效存储类”错误:

In file included from /usr/include/alsa/asoundlib.h:54:0,
             from IPI2Cserver.c:3764:
/usr/include/alsa/pcm.h:507:23: error: invalid storage class for function    ‘snd_pcm_abort’
static __inline__ int snd_pcm_abort(snd_pcm_t *pcm) { return   snd_pcm_nonblock(pcm, 2); }
                   ^~~~~~~~~~~~~
In file included from /usr/include/alsa/asoundlib.h:54:0,
             from IPI2Cserver.c:3764:
/usr/include/alsa/pcm.h:1030:20: error: invalid storage class for function   ‘snd_pcm_pack_audio_tstamp_config’
static inline void snd_pcm_pack_audio_tstamp_config(unsigned int *data,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/alsa/pcm.h:1038:20: error: invalid storage class for function ‘snd_pcm_unpack_audio_tstamp_report’
static inline void snd_pcm_unpack_audio_tstamp_report(unsigned int data, unsigned int accuracy,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/alsa/asoundlib.h:58:0,
             from IPI2Cserver.c:3764:
/usr/include/alsa/control.h:237:23: error: invalid storage class for  function ‘snd_ctl_abort’
static __inline__ int snd_ctl_abort(snd_ctl_t *ctl) { return  snd_ctl_nonblock(ctl, 2); }
                   ^~~~~~~~~~~~~
In file included from /usr/include/alsa/asoundlib.h:58:0,
             from IPI2Cserver.c:3764:
/usr/include/alsa/control.h:558:23: error: invalid storage class for function ‘snd_hctl_abort’
static __inline__ int snd_hctl_abort(snd_hctl_t *hctl) { return snd_hctl_nonblock(hctl, 2); }
                   ^~~~~~~~~~~~~~

现在的问题 - 在没有任何进一步的项目更改的情况下迁移到伸展时发生了什么变化?

alsa 的变化?拉伸变化?

在此先感谢 - 非常感谢任何帮助!

我不是专业/专家,所以我没有能力更改 alsa 源代码头以适应新情况!

标签: gccraspbianalsadebian-stretchlibalsa

解决方案


谢谢回答!

只是调用主程序的一个例子(在第 3764 行,当错误出现时):

#include <alsa/asoundlib.h>   // <- line 3764

int display_alsa() {
int val;

printf("ALSA library version: %s\n",
      SND_LIB_VERSION_STR);

printf("\nPCM stream types:\n");
for (val = 0; val <= SND_PCM_STREAM_LAST; val++)
   printf("  %s\n",
    snd_pcm_stream_name((snd_pcm_stream_t)val));

...

问候


推荐阅读