С этой проблемой, так как я установил SDL. Прежде всего, я попытался установить его с tar.gz-файлом, не пошел нормально при попытке компиляции (терминал не смог найти dir для SDL lib), поэтому после этого я установил synpatic pack mng, и успешно загрузил файл «libsdl1.2-dev». Я следую руководству lazzy foo для SDL, всякий раз, когда я пытаюсь скомпилировать простой код для создания экрана и blit изображение, я получаю следующее сообщение в терминале:SDL - ошибка сегментации (ядро сбрасывается), любые мысли?
(gcc -Wall -o teste teste.c -lSDL -lSDL_image)
"ошибка сегментации (ядро сбрасывали)"
Здесь мой код в C:
#include <stdio.h>
#include <stdlib.h>
#include "SDL/SDL.h"
int main(int argc, char* args[])
{
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
SDL_Init(SDL_INIT_EVERYTHING);
screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
if (screen == NULL) {
printf("SDL_SetVideoMode failed: %s\n", SDL_GetError());
exit(1); /* Unrecoverable error */
}
hello = SDL_LoadBMP("hello.bmp");
SDL_BlitSurface(hello, NULL, screen, NULL);
SDL_Flip(screen);
SDL_Delay(2000);
SDL_FreeSurface(hello);
SDL_Quit();
return 0;
}
- Я уже убедился, что hello.bmp втот же самый каталог моего файла teste.c.
Вот лог с помощью GDB на трассировку:
LOG
GNU gdb (Ubuntu 7.8-1ubuntu4) 7.8.0.20141001-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from teste...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/lazzo/Documentos/Treino/teste
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff707c700 (LWP 5605)]
Program received signal SIGSEGV, Segmentation fault.
SDL_Flip (screen=0x0) at ./src/video/SDL_video.c:1109
1109 ./src/video/SDL_video.c: No such file or directory.
(gdb) bt
#0 SDL_Flip (screen=0x0) at ./src/video/SDL_video.c:1109
#1 0x00000000004009a2 in main()
(gdb) c
Continuing.
[Thread 0x7ffff7fd8740 (LWP 5601) exited]
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) q
]0;[email protected]: ~/Documentos/[email protected]:~/Documentos/Treino$ exit
exit
КОНЕЦ LOG
Любая помощь вы, ребята могли бы дать мне бы очень ценна, и я прошу прощения за мой плохой английский, я из Бразилии и все еще изучаю английский.
UPDATE
После добавления Клас предложение на мой код, я получил от этого терминала:
"SDL_SetVideoMode не удалось: Нет Avaible видеоустройства"
Как это возможно? (Моя видеокарта является Radeon HD 4850 кстати)
Синтаксис: $ gcc [опции] [исходные файлы] [файлы объектов] -o выходной файл – Vincent
Выходное имя файла должно немедленно следовать за опцией -o. –
Вызов 'SDL_SetVideoMode' возвращает' null'. Если вы получите возвращаемое значение «null», вы должны сразу вызвать «SDL_GetError», чтобы проверить, что такое ошибка. –