在 XCB 库中使用 pkg-config 到 link 时,GCC 会给出未定义的引用
GCC gives undefined reference when using pkg-config to link with the XCB library
我正在学习 here 的 X11 编程教程。该页面提供了 2 个可用于编译 XCB-based 程序的命令:
gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
和
gcc -Wall prog.c -lxcb
现在,我都试过了。第一个说 gcc: error: unrecognized command-line option ‘--cflags’
。显然这是一个 shell 相关的问题(如我所见 here)。所以我尝试了bash
。这给出了一个不同的错误:
/usr/bin/ld: /tmp/ccnURTF3.o: in function `useXlib':
example.c:(.text+0xd6): undefined reference to `XInternAtom'
/usr/bin/ld: /tmp/ccnURTF3.o: in function `useXlibProperly':
example.c:(.text+0x163): undefined reference to `XInternAtoms'
/usr/bin/ld: /tmp/ccnURTF3.o: in function `main':
example.c:(.text+0x4b1): undefined reference to `XOpenDisplay'
/usr/bin/ld: example.c:(.text+0x559): undefined reference to `XCloseDisplay'
collect2: error: ld returned 1 exit status
这和我用 gcc -Wall prog.c -lxcb
得到的一样。所以我想 bash
解决了这个问题,但有 2 个。在 Atom 中,当你将鼠标悬停在一个函数上时,它会显示它来自哪个 header。但是在这个我什么都没得到。
提前致谢
看起来这些年来库已经分裂,函数声明被移动到不同的库。现在 xcb
取决于 X11
或类似的东西,或者 pkg-config --libs xcb
应该输出 -lX11
,不知道。无论如何,以下作品:
gcc -Wall 1.c -lxcb -lX11
或以下也适用:
gcc -Wall 1.c $(pkg-config --cflags --libs xcb) $(pkg-config --cflags --libs x11)
最好联系该介绍的维护者,让他知道他应该更新页面。
我正在学习 here 的 X11 编程教程。该页面提供了 2 个可用于编译 XCB-based 程序的命令:
gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
和
gcc -Wall prog.c -lxcb
现在,我都试过了。第一个说 gcc: error: unrecognized command-line option ‘--cflags’
。显然这是一个 shell 相关的问题(如我所见 here)。所以我尝试了bash
。这给出了一个不同的错误:
/usr/bin/ld: /tmp/ccnURTF3.o: in function `useXlib':
example.c:(.text+0xd6): undefined reference to `XInternAtom'
/usr/bin/ld: /tmp/ccnURTF3.o: in function `useXlibProperly':
example.c:(.text+0x163): undefined reference to `XInternAtoms'
/usr/bin/ld: /tmp/ccnURTF3.o: in function `main':
example.c:(.text+0x4b1): undefined reference to `XOpenDisplay'
/usr/bin/ld: example.c:(.text+0x559): undefined reference to `XCloseDisplay'
collect2: error: ld returned 1 exit status
这和我用 gcc -Wall prog.c -lxcb
得到的一样。所以我想 bash
解决了这个问题,但有 2 个。在 Atom 中,当你将鼠标悬停在一个函数上时,它会显示它来自哪个 header。但是在这个我什么都没得到。
提前致谢
看起来这些年来库已经分裂,函数声明被移动到不同的库。现在 xcb
取决于 X11
或类似的东西,或者 pkg-config --libs xcb
应该输出 -lX11
,不知道。无论如何,以下作品:
gcc -Wall 1.c -lxcb -lX11
或以下也适用:
gcc -Wall 1.c $(pkg-config --cflags --libs xcb) $(pkg-config --cflags --libs x11)
最好联系该介绍的维护者,让他知道他应该更新页面。