c++ - X11 具有 undefined reference 的功能,但似乎没问题。 IDE 不会提示那些库

标签 c++ c debian x11 codeblocks

无法构建我的 C 程序。

我正在开发一个 v4l2 程序来激活我的网络摄像头并开始录制。 我有几个包括:(它们都可以)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>             /* getopt_long() */
#include <unistd.h>
#include <errno.h>
#include <stdint.h>

#include <sys/ipc.h>
#include <sys/shm.h>
#include <X11/Xlib.h>
#include <X11/extensions/XShm.h>

这些函数在/X11 中

我在 Eclipse、Netbeans 和 Code::Blocks 中出现了以下错误,所以我确定这是一个 S.O 问题。 他们不会提示找不到库或找不到内部引用(包括在我的包含中的那些库内部)。

我已经在 Ubuntu 12、Debian 6 Squeezy 和 7 Wheezy 上试过了。

||=== Build: Release in v4l2 (compiler: GNU GCC Compiler) ===|
obj/Release/viewer.o||In function `image_destroy':|
viewer.c|| undefined reference to `XDestroyImage'|
viewer.c|| undefined reference to `XFreeGC'|
viewer.c|| undefined reference to `XShmDetach'|
viewer.c|| undefined reference to `XFreePixmap'|
obj/Release/viewer.o||In function `image_create':|
viewer.c|| undefined reference to `XCreateGC'|
viewer.c|| undefined reference to `XGetWindowAttributes'|
viewer.c|| undefined reference to `XShmCreateImage'|
viewer.c|| undefined reference to `XShmAttach'|
viewer.c|| undefined reference to `XCreateImage'|
viewer.c|| undefined reference to `XShmQueryExtension'|
viewer.c|| undefined reference to `XShmPixmapFormat'|
viewer.c|| undefined reference to `XShmCreatePixmap'|
obj/Release/viewer.o||In function `image_put':|
viewer.c|| undefined reference to `XPutImage'|
viewer.c|| undefined reference to `XShmPutImage'|
obj/Release/viewer.o||In function `main':|
viewer.c:(.text.startup+0x186)||undefined reference to `XOpenDisplay'|
viewer.c:(.text.startup+0x1ac)||undefined reference to `XScreenOfDisplay'|
viewer.c:(.text.startup+0x1e9)||undefined reference to `XCreateSimpleWindow'|
viewer.c:(.text.startup+0x244)||undefined reference to `XMapRaised'|
viewer.c:(.text.startup+0x25e)||undefined reference to `XStoreName'|
viewer.c:(.text.startup+0x27b)||undefined reference to `XGetWindowAttributes'|
viewer.c:(.text.startup+0x8c6)||undefined reference to `XPending'|
viewer.c:(.text.startup+0x8e3)||undefined reference to `XNextEvent'|
viewer.c:(.text.startup+0xa85)||undefined reference to `XPending'|
viewer.c:(.text.startup+0xaa2)||undefined reference to `XNextEvent'|
viewer.c:(.text.startup+0xedf)||undefined reference to `XPending'|
viewer.c:(.text.startup+0xefc)||undefined reference to `XNextEvent'|
||=== Build failed: 26 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我正在使用 debian 7 Wheeze...我正在尝试以这种方式编译: gcc -O2 -L/usr/X11R6/lib -lX11 -lXext -o viewer viewer.c

这条路径不存在,如何找到正确的路径?

最佳答案

在系统上一些其他动态链接的 X 程序的路径上运行 ldd 以查看从何处加载库。例如。

ldd /usr/bin/gnome-session

关于c++ - X11 具有 undefined reference 的功能,但似乎没问题。 IDE 不会提示那些库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261767/

相关文章:

linux - Linux环境下ASP.NET Core网站文件放在哪里

Docker:无法纠正问题,您持有损坏的软件包

c - 如何为 Raspberry Pi 应用程序链接 libconfig 库

c++ - 强制显示系统托盘通知气球

python - 如何使用pybind11返回一个DataFrame?

c++ - 我需要在 C++ 中对齐吗?

c++ - 如何用 C 或 C++ 计算文件的哈希值?

c - 在 ';' 之前缺少 'type'

c++ - 从 1 个程序在 C++ 中打开 2 个管道

C低级读写功能64位等效?