glad.o при использовании -fPIC отсутствуют символы - PullRequest
0 голосов
/ 14 октября 2019

Для проекта с графическим интерфейсом у нас есть 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 я должен получить, чтобы правильно генерировать эти символы?

...