对“XShmQueryVersion”未定义引用

对“XShmQueryVersion”未定义引用

我尝试编译一个使用简单 X11 函数的简单代码库,但在编译时出现错误:

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

XShmQueryVersion在我的代码中使用了该函数,我用它编译了它

g++ myprogram.c -o program

我错过了什么?

答案1

您需要告诉编译器在哪些库中查找 X11 函数。核心 X 函数XOpenDisplay如下libX11而扩展则位于其他库中 - 例如扩展库为了XShmQueryVersion

告诉编译器链接这些库的直接方法是通过-l标志:

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

一旦您开始使用 Makefile 等构建更大的软件,就会有工具来帮助管理这些库的标志,并且您的 Makefile 中可能会有一些内容,例如:

CFLAGS += `pkg-config --cflags x11 xext`
LIBS += `pkg-config --libs x11 xext`

相关内容