LINUX.ORG.RU

SDL initialization: Unable to open a console terminal


0

0

Собрался разбиратся в gcc (До знакомства с Linux уже писал на С), и с "игровой" библиотекой SDL, - тривиальная программа инициализации:

#include <stdlib.h>
#include <SDL.h>

int main(void)
    {
        if(SDL_Init(SDL_INIT_VIDEO)==-1)
        {
                puts("SDL initialization failed:");
                puts(SDL_GetError());
                exit(1);
        }

        puts("SDL initalaized.\nQuiting...\n");
        SDL_Quit();
        exit(0);
    }

Скомпилировали, запускаем от пользователя:

SDL initialization failed:
Unable to open a console terminal

От рута:

SDL initalaized.
Quiting...
(то есть все нормально)

КАКИЕ ПРАВА И НА ЧТО НАДО ВЫСТАВИТЬ?

Спасибо!



Очень помогает в таких ситуациях strace.

strace ./a.out и смотришь где было EPERM, например.

logIN
()
Ответ на: комментарий от logIN

Так, трассернул, были 'permission denided' на /dev/tty0 и /dev/tty. 
Больше результатов 'permission denided' нигде не было, также я не нашел там
обращения к другим консольным устройствам, поставил rw права на эти устройства,
но ВСЕ РАВНО ВЫЛЕТАЕТ С ТОЙ ЖЕ ОШИБКОЙ.

Вот вывод (strace ./game1 [прошу прощения за большой кусок слабочитабельной информации]):

...
...
...
open("/dev/fb0", O_RDWR)                = 3
ioctl(3, FBIOGET_FSCREENINFO, 0xbf9e5080) = 0
mmap2(NULL, 7680000, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0xb7668000
ioctl(3, FBIOGET_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = -1 EINVAL (Invalid argument)
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
ioctl(3, FBIOPUT_VSCREENINFO, 0xbf9e4fe0) = 0
open("/dev/tty0", O_WRONLY)             = 4
ioctl(4, VIDIOC_QUERYCAP or VT_OPENQRY, 0x804a394) = 0
close(4)                                = 0
geteuid32()                             = 1000
open("/dev/tty", O_RDWR)                = 4
ioctl(4, KDGKBMODE, 0xbf9e4f5c)         = -1 EINVAL (Invalid argument)
close(4)                                = 0
munmap(0xb7668000, 7680000)             = 0
close(3)                                = 0
rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL}, {SIG_DFL}, 8) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f43000
write(1, "SDL initialization failed:\n", 27SDL initialization failed:
) = 27
write(1, "Unable to open a console termina"..., 34Unable to open a console terminal
) = 34
munmap(0xb7f43000, 4096)                = 0
exit_group(1)                           = ?

fifajan
() автор топика
Ответ на: комментарий от fifajan

Все, вопрос снят, обновил SDL (поставил стабильный DEB), SDL собирался когда-то давно (на заре моего линуксоидства) как драйвер для вывода видеопотока mplayer'ом.

logIN'у спасибо за полезный урок.

fifajan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.