Для проекта с графическим интерфейсом у нас есть make-файл, который создает библиотеку (.a) из всех файлов .o, которая затем связывается для каждого теста.
При этом любая неиспользуемая функциятаким образом, не включены в исполняемый файл. Чтобы не приходилось перестраивать каждый тест каждый раз, мы решили перейти на .so и использовать динамическое связывание. Этот код использует OpenGL и glad.o (glad.c -> glad.o)
libgrail.so: undefined reference to `glad_glProgramBinary'
libgrail.so: undefined reference to `glad_glGetProgramBinary'
У меня был glad.o, и я даже не уверен, как мы его получили. В нем определены вышеупомянутые символы, но он не скомпилирован с -fPIC и не может быть связан с общей библиотекой.
Когда я собираюсь с использованием glad.c, полученный в результате glad.o НЕ имеет символов
Просмотр заголовочного файла glad.h
GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary;
#define glProgramBinary glad_glProgramBinary
Они вызываются при компиляции шейдеров.
Так что, возможно, наш источник glad.c плохой. Я просмотрел все, и могу найти его в различных демонстрациях opengl, но я не понимаю, откуда он на самом деле.
Я нашел этот генератор: https://glad.dav1d.de/
и сгенерировал код для OpenGL3.3 (.c и .h) компиляция этого кода имеет те же ошибки. Так какую версию glad.c я должен получить, чтобы правильно генерировать эти символы?