X11函数与未定义的引用,但它似乎是好的.IDE不会抱怨这些库

X11 functions with undefined reference but It seens to be ok. IDE does not complains about those libraries

本文关键字:IDE 似乎是 未定义 函数 引用 X11      更新时间:2023-10-16

无法构建我的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>

这些函数是whittin/X11

如果在Eclipse, Netbeans和Code::Blocks中出现以下错误,那么我确信这是一个S.O问题。他们不会抱怨找不到库或找不到内部引用(包括在我的include中那些库中的引用)。

我试过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…我试图以这种方式编译:-lX11 -lXext -o viewer.c

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

在系统上其他动态链接的X程序的路径上运行ldd,看看这些库是从哪里加载的。例如

ldd /usr/bin/gnome-session