sdl2のチュートリアルを見ているのですが、Windowの描画をしようとすると以下の警告が発生し実行されません。なぜでしょうか?
libEGL warning: DRI2: failed to authenticate
libEGLが見つかっていないのかと考えてldd
でsdl2_helloworldを見てみましたが異常はなさそう(libEGLを使っていなさそう)でした
$ ldd sdl2_helloworld
linux-vdso.so.1 (0x00007ffcce79b000)
libSDL2-2.0.so.0 => /usr/local/lib/libSDL2-2.0.so.0 (0x00007fc7f28e1000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc7f2743000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc7f25b6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc7f259c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc7f23b2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc7f23ac000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc7f2389000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc7f237f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc7f2a1f000)
下記のソースをコンパイル、実行するためのMakefile: make run
でコンパイルと実行を行っています。
CFLAGS := $(shell sdl2-config --cflags)
LIBS := $(shell sdl2-config --libs)
sdl2_helloworld: sdl2_helloworld.cpp
@clang++ $(CFLAGS) $(LIBS) -o sdl2_helloworld sdl2_helloworld.cpp
.PHONY: run
run: sdl2_helloworld
@./sdl2_helloworld
#include <iostream>
#include "SDL.h"
#include <memory>
int main() {
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_RENDERER_ACCELERATED|SDL_WINDOW_SHOWN);
if (win == nullptr) {
std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl;
SDL_Quit();
return 1;
}
auto *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_PRESENTVSYNC);
if (ren == nullptr) {
SDL_DestroyWindow(win);
std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl;
SDL_Quit();
return 1;
}
}
Ubuntu 18.10 on VirtualBox
Host OS windows10