missing symbols in libGL
With mesa 19.3.x building the tests in SDL2 fails with:
make: Entering directory '.../SDL2-2.0.10/test'
arm-v7a-linux-gnueabihf-gcc -o testshader testshader.c -g -O2 -D_REENTRANT -I.../include/SDL2 -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_OPENGL -DHAVE_SDL_TTF -g -lSDL2_test -lSDL2 -lunwind -lunwind-generic -lGL -lm
.../bin/ld: /tmp/ccERsAmM.o: in function `SDL_GL_LoadTexture':
.../SDL2-2.0.10/test/testshader.c:322: undefined reference to `glGenTextures'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:323: undefined reference to `glBindTexture'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:324: undefined reference to `glTexParameteri'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:325: undefined reference to `glTexParameteri'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:326: undefined reference to `glTexImage2D'
.../bin/ld: /tmp/ccERsAmM.o: in function `InitGL':
.../SDL2-2.0.10/test/testshader.c:339: undefined reference to `glViewport'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:340: undefined reference to `glClearColor'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:341: undefined reference to `glClearDepth'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:342: undefined reference to `glDepthFunc'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:343: undefined reference to `glEnable'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:344: undefined reference to `glShadeModel'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:346: undefined reference to `glMatrixMode'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:347: undefined reference to `glLoadIdentity'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:350: undefined reference to `glOrtho'
.../bin/ld: /tmp/ccERsAmM.o: in function `DrawGLScene':
.../SDL2-2.0.10/test/testshader.c:366: undefined reference to `glClear'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:367: undefined reference to `glLoadIdentity'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:369: undefined reference to `glTranslatef'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:372: undefined reference to `glBegin'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:373: undefined reference to `glColor3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:374: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:375: undefined reference to `glColor3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:376: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:377: undefined reference to `glColor3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:378: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:379: undefined reference to `glEnd'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:381: undefined reference to `glTranslatef'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:384: undefined reference to `glTexEnvf'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:385: undefined reference to `glEnable'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:386: undefined reference to `glBlendFunc'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:389: undefined reference to `glEnable'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:390: undefined reference to `glBindTexture'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:391: undefined reference to `glColor3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:396: undefined reference to `glBegin'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:397: undefined reference to `glTexCoord2f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:398: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:399: undefined reference to `glTexCoord2f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:400: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:401: undefined reference to `glTexCoord2f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:402: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:403: undefined reference to `glTexCoord2f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:404: undefined reference to `glVertex3f'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:405: undefined reference to `glEnd'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:410: undefined reference to `glDisable'
.../bin/ld: /tmp/ccERsAmM.o: in function `InitGL':
.../SDL2-2.0.10/test/testshader.c:352: undefined reference to `glMatrixMode'
.../bin/ld: /tmp/ccERsAmM.o: in function `CompileShaderProgram':
.../SDL2-2.0.10/test/testshader.c:156: undefined reference to `glGetError'
.../bin/ld: .../SDL2-2.0.10/test/testshader.c:190: undefined reference to `glGetError'
collect2: error: ld returned 1 exit status
make: *** [Makefile:250: testshader] Error 1
make: Leaving directory '.../SDL2-2.0.10/test'
I'm not sure if this is a supported use-case. A lot of applications don't link directly to libGL like this. This is broken since commit 01e43798 and nothing in the commit message suggests that this was deliberate. I'm not sure what happens here. Just adding a single glGetString(GL_EXTENSIONS);
in MakeContextCurrent()
again 'fixes' the problem. I guess this somehow makes sure that the symbols are added or not stripped?