首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDL:在Devuan上没有可用的视频设备预打包应用程序

SDL:在Devuan上没有可用的视频设备预打包应用程序
EN

Stack Overflow用户
提问于 2020-02-20 11:14:49
回答 1查看 365关注 0票数 0

我正在尝试编译一个SDL2 "Hello这里有一个窗口“应用程序,但是它不起作用。这是我得到的错误:

代码语言:javascript
复制
Could not initialize SDL: No available video device

这是我的密码:

代码语言:javascript
复制
#include <stdio.h>
#include "SDL2/SDL.h"

int greatSuccess = 1;

int main(int argc, char* argv[]) {
  if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) == 0) {

    // this code path is not hit, omitted 

  } else {
    printf("Could not initialize SDL: %s\n", SDL_GetError());
    greatSuccess = 0;
  }
  return !greatSuccess ;
}

导致这种情况的错误概括为预先打包的应用程序;mgba-sdl是基于SDL2的mgba的前端,它会产生相同的错误:

代码语言:javascript
复制
Could not initialize video: No available video device

我也这么说,因为在这两种情况下,No available video device (大概)都是由SDL_GetError()生成的。

从应用程序中枚举视频设备将产生以下结果:

代码语言:javascript
复制
0: dummy

我的平台是Devuan ASCII,它基于Debian 9/Stretch。

这是ldd ./hellowindow的输出

代码语言:javascript
复制
    linux-vdso.so.1
    libSDL2-2.0.so.0 => /usr/local/lib/libSDL2-2.0.so.0
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
    /lib64/ld-linux-x86-64.so.2
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1
    libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
    libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
    libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
    libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6
    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1
    libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0

glxgears确实能工作。glxinfo生产:

代码语言:javascript
复制
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Mobile Intel GM45 Express Chipset 
OpenGL version string: 2.1 Mesa 13.0.6
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

有些事我试过了:

  • export DISPLAY=:0 (没有工作,而且它已经被设置为:0.0)
  • SDL_VIDEODRIVER=x11 )(不工作,并且在这开始有意义之前就失败了,请参阅sdl2-config --static-libs而不是--cflags --libs

的视频drivers)

  • compiling枚举

也许SDL2不支持OpenGL 2.1?这里发生了什么事?

这一切对我来说都很奇怪,就像视频驱动程序的问题,除了我有工作的驱动程序,得到glxgearsglxinfo的确认。

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 15:21:53

keltar一下子发现了这个问题:我在本地安装了第二个SDL2。

我通过删除以下文件和目录解决了这个问题:

代码语言:javascript
复制
/usr/local/bin/sdl2-config
/usr/local/include/SDL2/
/usr/local/lib/libsdl*

在没有图形支持的情况下构建的/usr/local中的副本优先于包管理器的版本,这就是为什么它不能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60318688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档