Неопределенная ссылка на `XShmQueryVersion'

Я пытаюсь скомпилировать простую кодовую базу, которая использует простые функции X11, но это дает ошибку при компиляции:

(.text+0x1c): undefined reference to `XShmQueryVersion'

Я использовал XShmQueryVersion функция в моем коде, я скомпилировал его с

g++ myprogram.c -o program

Что мне не хватает?

1 ответ

Вы должны указать компилятору, в каких библиотеках найти функции X11. Основные функции X: XOpenDisplay находятся в libX11, а расширения в дополнительных библиотеках - например, libXext для XShmQueryVersion,

Прямой способ сообщить компилятору о связи с этими библиотеками - через -l флаги:

g++ myprogram.c -o program -lXext -lX11

Как только вы приступите к созданию более крупного программного обеспечения с помощью Makefiles и тому подобного, появятся инструменты, помогающие управлять флагами для этих библиотек, и в вашем Makefile может быть что-то, например:

CFLAGS += `pkg-config --cflags x11 xext`
LIBS += `pkg-config --libs x11 xext`
Другие вопросы по тегам