Я пытаюсь скомпилировать простую кодовую базу, которая использует простые функции X11, но она дает ошибку при компиляции:
(.text+0x1c): undefined reference to `XShmQueryVersion'
Я использовал функцию XShmQueryVersion
в своем коде, я скомпилировал ее с помощью
g++ myprogram.c -o program
Чего мне не хватает?
Необходимо сказать компилятор, что библиотеки найти X11 функционирует в. Ядро X функций как XOpenDisplay
находятся в libX11, в то время как расширения находятся в дополнительных библиотеках - как libXext для XShmQueryVersion
.
Прямой способ сказать Вашему компилятору связываться с этими библиотеками через -l
флаги:
g++ myprogram.c -o program -lXext -lX11
После того как Вы добираетесь до создания большего программного обеспечения с Make-файлами и таким, существуют инструменты, чтобы помочь управлять флагами для этих библиотек, и у Вас могло бы быть что-то в Вашем Make-файле, таком как:
CFLAGS += `pkg-config --cflags x11 xext`
LIBS += `pkg-config --libs x11 xext`