SDL2.0/OpenGL代码赢得';不编译

SDL2.0/OpenGL代码赢得';不编译,opengl,ubuntu,sdl-2,Opengl,Ubuntu,Sdl 2,我试图在终端中使用gcc编译一个简单的SDL/OpenGL程序。以下是代码(main.c): 我得到以下错误: /tmp/ccg0glmq.o: In function `sdldie': /home/jared/projects/gl_nbody/./src/main.c:16: undefined reference to `SDL_GetError' /home/jared/projects/gl_nbody/./src/main.c:17: undefined reference to

我试图在终端中使用gcc编译一个简单的SDL/OpenGL程序。以下是代码(main.c):

我得到以下错误:

/tmp/ccg0glmq.o: In function `sdldie':
/home/jared/projects/gl_nbody/./src/main.c:16: undefined reference to `SDL_GetError'
/home/jared/projects/gl_nbody/./src/main.c:17: undefined reference to `SDL_Quit'
/tmp/ccg0glmq.o: In function `checkSDLError':
/home/jared/projects/gl_nbody/./src/main.c:25: undefined reference to `SDL_GetError'
/home/jared/projects/gl_nbody/./src/main.c:31: undefined reference to `SDL_ClearError'
/tmp/ccg0glmq.o: In function `main':
/home/jared/projects/gl_nbody/./src/main.c:43: undefined reference to `SDL_Init'
/home/jared/projects/gl_nbody/./src/main.c:49: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:50: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:54: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:55: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:58: undefined reference to `SDL_CreateWindow'
/home/jared/projects/gl_nbody/./src/main.c:66: undefined reference to `SDL_GL_CreateContext'
/home/jared/projects/gl_nbody/./src/main.c:71: undefined reference to `SDL_GL_SetSwapInterval'
/home/jared/projects/gl_nbody/./src/main.c:74: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:75: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:77: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:79: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:82: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:83: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:84: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:85: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:88: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:89: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:90: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:91: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:94: undefined reference to `SDL_GL_DeleteContext'
/home/jared/projects/gl_nbody/./src/main.c:95: undefined reference to `SDL_DestroyWindow'
/home/jared/projects/gl_nbody/./src/main.c:96: undefined reference to `SDL_Quit'

这似乎表明我没有正确地包含SDL2库。然而,我认为这是通过-lSDL2选项处理的。关于这里的错误有什么想法吗?

在linux上,您应该不包含-lSDL2,而是使用
SDL2 config
脚本。它有一些奇怪的依赖项,只有那个脚本才能解决它。您应该使用以下内容进行编译:

gcc -o ./bin/gl_nbody -I/usr/local/include/SDL2 `sdl-config --cflags --libs` -g -lGLEW -lGL -lX11 -Wl,-rpath,/usr/local/lib -L/usr/local/lib ./src/main.c 

SDL Wiki上的常见问题解答显示了如何执行此操作的更多详细信息:

可能缺少-lsdl2main libSDL2.a所在目录的-L参数。可能-L/usr/本地/lib@cup你读过所有的gcc命令行了吗?因为它已经在那里了…我的坏问题-在800x600屏幕上工作的问题。您是否尝试过将-L/usr/local/lib放在-lSDL2之前
/tmp/ccg0glmq.o: In function `sdldie':
/home/jared/projects/gl_nbody/./src/main.c:16: undefined reference to `SDL_GetError'
/home/jared/projects/gl_nbody/./src/main.c:17: undefined reference to `SDL_Quit'
/tmp/ccg0glmq.o: In function `checkSDLError':
/home/jared/projects/gl_nbody/./src/main.c:25: undefined reference to `SDL_GetError'
/home/jared/projects/gl_nbody/./src/main.c:31: undefined reference to `SDL_ClearError'
/tmp/ccg0glmq.o: In function `main':
/home/jared/projects/gl_nbody/./src/main.c:43: undefined reference to `SDL_Init'
/home/jared/projects/gl_nbody/./src/main.c:49: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:50: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:54: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:55: undefined reference to `SDL_GL_SetAttribute'
/home/jared/projects/gl_nbody/./src/main.c:58: undefined reference to `SDL_CreateWindow'
/home/jared/projects/gl_nbody/./src/main.c:66: undefined reference to `SDL_GL_CreateContext'
/home/jared/projects/gl_nbody/./src/main.c:71: undefined reference to `SDL_GL_SetSwapInterval'
/home/jared/projects/gl_nbody/./src/main.c:74: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:75: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:77: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:79: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:82: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:83: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:84: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:85: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:88: undefined reference to `glClearColor'
/home/jared/projects/gl_nbody/./src/main.c:89: undefined reference to `glClear'
/home/jared/projects/gl_nbody/./src/main.c:90: undefined reference to `SDL_GL_SwapWindow'
/home/jared/projects/gl_nbody/./src/main.c:91: undefined reference to `SDL_Delay'
/home/jared/projects/gl_nbody/./src/main.c:94: undefined reference to `SDL_GL_DeleteContext'
/home/jared/projects/gl_nbody/./src/main.c:95: undefined reference to `SDL_DestroyWindow'
/home/jared/projects/gl_nbody/./src/main.c:96: undefined reference to `SDL_Quit'
gcc -o ./bin/gl_nbody -I/usr/local/include/SDL2 `sdl-config --cflags --libs` -g -lGLEW -lGL -lX11 -Wl,-rpath,/usr/local/lib -L/usr/local/lib ./src/main.c