我使用的是 Ubuntu 22.04.4 LTS,并且正在使用 SDL2 库,但由于某种原因,调用
SDL_Quit()
会给我带来分段错误。这是发生错误的最小代码量:
#include <SDL2/SDL.h>
int main(void)
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *screen = SDL_CreateWindow("test", 100, 100, 680, 550, 0);
SDL_DestroyWindow(screen);
SDL_Quit();
return 0;
}
编译使用:
gcc test.c `sdl-config --cflags --libs` -lSDL2main -lSDL2 -Wall -pedantic -std=gnu99 -o test
如果我不打电话
SDL_CreateWindow()
,它会因某种原因起作用。我在 gdb 中运行它并回溯它,似乎错误发生在一个名为 ___pthread_mutex_lock()
的函数中。有谁知道这里发生了什么吗?
我猜既然你是针对 SDL2 进行编译,你应该使用
sdl2-config
而不是 sdl-config
。
要进行调试,您应该尝试通过在 shell 中键入
MY_FLAGS=$(sdl2-config --cflags --libs)
,然后键入 echo $MY_FLAGS
来独立查看这些标签。你应该有类似的东西
-I/include/path/to/SLD2 -D_REENTRANT -lSDL2
也许还有一些其他标志。