У меня проблемы с компиляцией примера программы SDL / OpenGL для Windows (с MinGW). Он компилируется без ошибок (хотя и с предупреждениями) в моей виртуальной машине, на которой работает Arch. Проблема, кажется, находится на стадии связывания. Он умирает со многими «неопределенными ссылками на symbol
» ошибок. Я компилирую с этой командной строкой:
gcc -L/mingw32/lib -lmingw32 -lSDL2main -lSDL2 -lopengl32 -lglu32 -mwindows -I/mingw32/include/SDL2 -Dmain=SDL_main -o cube -3 cube-3.c
Терминал, с которого я запускаю команду, является 32-битным, поэтому библиотеки соответствуют типу архитектуры. Я проверил, что все библиотеки, на которые есть ссылки, установлены в соответствующих местах
/mingw32/i686-w64-mingw32/lib/libopengl32.a
/mingw32/i686-w64-mingw32/lib/libglu32.a
/mingw32/lib/libSDL2.a
/mingw32/lib/libSDL2main.a
/mingw32/lib/libSDL2.dll.a
Ошибки компоновщика имеют следующую форму:
C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccuBYqiv.o:cube-3.c:(.text+0x37): undefined reference to `SDL_RWFromFile
неразрешимые символы
SDL_RWFromFile
SDL_LoadBMP_RW
_imp__glGenTextures@8
_imp__glBindTexture@8
_imp__glTexImage2D@36
_imp__glTexParameteri@12
_imp__glTexParameteri@12
SDL_FreeSurface
SDL_Init
SDL_GetError
SDL_GL_SetAttribute
SDL_GL_SetAttribute
SDL_CreateWindow
SDL_GetError
SDL_GL_CreateContext
SDL_GetError
SDL_GL_SetSwapInterval
_imp__glEnable@4
_imp__glDepthFunc@4
glGenBuffers
glBindBuffer
glBufferData
glGenVertexArrays
glBindVertexArray
glEnableVertexAttribArray
glVertexAttribPointer
glCreateShader
glShaderSource
glCompileShader
glCreateShader
glShaderSource
glCompileShader
glCreateProgram
glAttachShader
glAttachShader
glLinkProgram
_imp__glEnable@4
_imp__glShadeModel@4
_imp__glClearColor@16
_imp__glClearDepth@8
_imp__glEnable@4
_imp__glDepthFunc@4
_imp__glHint@8
_imp__glLoadIdentity@0
_imp__glTranslatef@12
_imp__glRotatef@16
_imp__glBegin@4
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glColor3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glVertex3f@12
_imp__glEnd@0
_imp__glBegin@4
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glTexCoord2f@8
_imp__glVertex3f@12
_imp__glEnd@0
_imp__glClear@4
glUseProgram
glBindVertexArray
_imp__glDrawArrays@12
SDL_DestroyWindow
SDL_Quit
SDL_StartTextInput
SDL_GetMouseState
SDL_PollEvent
SDL_GL_SwapWindow
SDL_StopTextInput
collect2.exe: error: ld returned 1 exit status
ОБНОВЛЕНИЕ --- Это включенные заголовки в этом порядке
#include <SDL.h>
#include <SDL_opengl.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>