我尝试编译一个使用简单 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`